功能目标ID范围

时间:2012-10-10 17:35:44

标签: javascript range element

我当前的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? 提前谢谢!

2 个答案:

答案 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]);
        }
    }
相关问题