0

私は、JSを使用して特定の名前のクラスをループし、それらのHTMLタグ内にあるものの最後に「*」を追加する関数を実行しようとしています。完全に機能していないので、何を変更する必要がありますか?クラス名は「価格」です。

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

function getValues(objName) {
    var arr = new Array();
    var el = document.createElement("span");
    el.innerHTML = "*";
    arr = document.getElementsByClassName(objName);
    for(var i = 0; i < arr.length; i++) {
        var obj = document.getElementsByClassName(objName).item(i);
        insertAfter(obj, el)
    }
};

getValues("price");
4

2 に答える 2

1

これを行う

function getValues(objName) {
            var arr = new Array();
            arr = document.getElementsByClassName(objName);
            for (var i = 0; i < arr.length; i++) {
                var el = document.createElement("span");
                el.innerHTML = "*";
                var obj = document.getElementsByClassName(objName).item(i);
                insertAfter(obj, el)
            }
        };

el実際には、その要素をタグに挿入するたびに新しい要素を作成する必要があります。そうしない*と、「price」クラスを持つDOMの最後のタグの最後に要素を1つだけ追加することになります。

于 2013-01-22T10:52:05.310 に答える
0

「機能していない」とはどういう意味ですか?

document.getElementsByClassNameはすでに配列を返します。それを2回フェッチする必要はありません、次のようにします。

arr = document.getElementsByClassName(objName);
for(var i = 0; i < arr.length; i++) {
    var obj = arr[i];
    insertAfter(obj, el);
}

insertAfterを書き直して、実際にinsertAfterを実行します。

function insertAfter(referenceNode, newNode) {
    referenceNode.insertAfter(newNode, referenceNode.lastChild);
}

ここで実際の例を参照してください:http://jsfiddle.net/BJ3YR/

于 2013-01-22T10:53:17.477 に答える