2013-10-27 47 views
0

尽管这个代码实际上工作,我试图把它缩小到一个循环...到目前为止,我所有的尝试都失败了。你会看到四个具有不同ID的下拉列表...但是,它们具有相同的类名称(optionLinks)。 下面是代码:我可以为4个不同的拖放列表创建一个循环吗?

function init(){ 

    var allE = document.getElementById("executive"); 
    allE.onchange = loadLink; 

    var allL = document.getElementById("legislative"); 
    allL.onchange = loadLink; 

    var allJ = document.getElementById("judicial"); 
    allJ.onchange = loadLink; 

    var allS = document.getElementById("state"); 
    allS.onchange = loadLink; 
} 

谢谢大家:)

回答

0
var ids = ['executive','legislative','judicial','state']; 
for (var i = 0; i < ids.length; i++) 
    document.getElementById(ids[i]).onChange = loadLink; 

或者......

var elements = document.getElementsByClassName('optionLinks'); 
for (var i = 0; i < elements.length; i++) 
    elements[i].onChange = loadLink; 
+0

因为它们都有optionLinks类,所以不需要id列表。 – bjb568

0
elements = document.getElementsByClassName('optionLinks'); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].onchange = loadLink; 
} 
+0

我建议在循环之前将'document.getElementsByClassName('optionLinks')'分配给一个变量。性能增益可以忽略不计,但可读性略有提升。 – 2013-10-27 00:19:33

+0

@Jeffman好主意。 (我通常懒得自己做) – bjb568

+0

问题:我的目标是避免一个实际的数组(),但我试过optionLinks,它没有工作。我很困惑什么时候使用括号,何时使用括号......请回复:) – EWade

相关问题