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