1

我当前的 init() 代码以元素 ID 为目标,从“desc_1”、“desc_2”、“desc_3”...等开始。

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 是什么?提前致谢!

4

2 回答 2

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每个元素的,以确保它的末尾有一个数字。

于 2012-10-10T17:38:24.597 回答
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]);
        }
    }
于 2012-10-10T17:51:39.127 回答