给出一个简单的基于零的数字索引数组:
var list = ['Foo', 'Bar', 'Baz'];
Run Code Online (Sandbox Code Playgroud)
很多时候,我注意到有人建议循环遍历数组中的变量,如下所示:
for(var item in list) { ... }
Run Code Online (Sandbox Code Playgroud)
......几乎可以肯定有人认为这是不好的做法,并提出了另一种方法:
var count = list.length;
for(var i = 0; i < count; i++) {
var item = list[i];
...
}
Run Code Online (Sandbox Code Playgroud)
不使用上面更简单的版本并使用第二个例子的原因是什么?
我偶然发现了几种在JavaScript中循环的方法,我最喜欢的是:
for(var i = 0; i < a.length; i++){
var element = a[i];
}
Run Code Online (Sandbox Code Playgroud)
但是在这里进行了测试(http://www.robertnyman.com/2008/04/11/javascript-loop-performance/),应该编写它以便只计算一次长度.
在jQuery中有一个.each,你可以坚持一个功能.我喜欢这个更好一点,因为我不需要输入两次数组,就像上面的解决方案一样.
如果JavaScript支持宏,那么推出自己的宏将是件小事,但遗憾的是它没有.
那么你们用什么?
我有一个变量account_number,其中存储了帐号.现在我想得到id为account_number的元素的值.怎么在javascript中做到这一点?
我尝试做document.getElementById(account_number).value,但它是null.
HTML看起来像这样:
<input class='transparent' disabled type='text' name='113114234567_name' id='113114234567_name' value = 'Neeloy' style='border:0px;height:25px;font-size:16px;line-height:25px;' />
Run Code Online (Sandbox Code Playgroud)
而js是:
function getElement()
{
var acc_list = document.forms.editBeneficiary.elements.bene_account_number_edit;
for(var i=0;i<acc_list.length;i++)
{
if(acc_list[i].checked == true)
{
var account_number = acc_list[i].value.toString();
var ben_name = account_number + "_name";
alert(document.getElementById("'" + ben_name.toString() + "'").value);
}
}
Run Code Online (Sandbox Code Playgroud)
}
这里bene_account_number_edit是单选按钮.
谢谢
有任何想法吗?
我习惯使用jQuery来操作DOM,例如:
var mything = $("#mything");
mything.on("click", function() {
mything.addClass("red");
mything.html("I have sinned.");
});
Run Code Online (Sandbox Code Playgroud)
但现在我想用Vanilla JavaScript做同样的事情.这可能吗?我该怎么做?
注意:此问题旨在成为有关Vanilla JavaScript DOM操作的综合资源.