我当前的init()代码的目标是从'desc_1','desc_2','desc_3'开始的元素ID ......等等。
function init(){
var max = 50000;
for (i = 1; i < max; i++){
makeEditable('desc_'+i);}
}
页面上的大多数元素实际上不会从1开始。例如,它们可能是'desc_47','desc_48','desc_49' - 或者在某些情况下,甚至不是连续的:'desc_96' , 'desc_99', 'desc_101'。
我的init()语句必须针对这些类型的元素ID? 提前谢谢!
答案 0 :(得分:1)
不要猜测50000个ID,只需选择ID为desc_
的所有元素,然后将该元素传递给makeEditable()
。
var els = document.querySelectorAll("*[id^=desc_]");
for (var i = 0; i < els.length; i++) {
makeEditable(els[i]);
}
如果他们使用相同的元素类型,请使用标记名称替换选择器中的*
。
如果有其他元素以该ID开头,则为元素分配一个类,以便您可以直接定位它们。
如果你不能添加一个类,那么在传递它之前,你只需要测试每个元素的id
以确保它在最后有一个数字。
答案 1 :(得分:0)
如果您正在寻找对旧浏览器的支持,可以通过以下方式完成(可能有点乱):
var divs = document.getElementsByTagName('div'),
len = divs.length,
myArray = [];
for (var i = 0;i<len;i++) {
if (divs[i].id.substring(0,4) == "desc") {
makeEditable(divs[i]);
}
}