一个循环遍历span类并在末尾添加文本的函数

时间:2013-01-22 10:44:42

标签: javascript

我正在尝试使用一些其他函数来执行一个函数,使用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");

2 个答案:

答案 0 :(得分: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,否则最终只会在最后一个标记的末尾添加单个*元素。具有“价格”等级的DOM。

答案 1 :(得分:0)

你说“它不起作用”是什么意思?

document.getElementsByClassName已经返回一个数组,你不需要再获取它两次,就这样做:

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/