var brands = document.getElementsByName("brand");
for(var brand in brands){
$("input[name='brand']").eq(brand).click(function(){
alert("hello22");
loadDataFN(1);
});
}
此代码未在ie6中执行, 任何帮助将不胜感激。
答案 0 :(得分:3)
问题可能是您尝试使用for-in构造来迭代数字数组。这往往不会给出预期的结果。请改用for循环:
var brands = document.getElementsByName("brand");
// Use an incremental for loop to iterate an array
for(var i=0; i<brands.length; i++){
$("input[name='brand']").eq(brands[i]).click(function(){
alert("hello22");
loadDataFN(1);
});
}
在看到代码的第一部分后,循环显得不必要。您应该只需要以下内容,因为您要为所有品牌输入分配相同的功能。
// These will return the same list of elements (as long as you don't have non-input elements named brand)
// though the jQuery version will return them as jQuery objects
// rather than plain DOM nodes
var brands = document.getElementsByName("brand");
$("input[name='brand']");
因此,getElementsByName()
和循环不是必需的。
$("input[name='brand']").click(function() {
alert("hello22");
loadDataFN(1);
});
for-in
循环用于迭代对象的属性,而不是遍历数组的元素。
答案 1 :(得分:1)
如果没有jQuery,为什么不编写代码呢?
这样的事情:
function getInputByName(name) {
var i, j = document.getElementsByTagName('input').length;
for(i=0;i<j;++i) { // You can also use getAttribute, but maybe it won't work in IE6
if(document.getElementsByTagName('input')[i].name === name) {
return document.getElementsByTagName('input')[i];
}
}
return null;
}
我不知道jQuery,但也许你可以这样做:
$(getInputByName('brand')).eq(brand).click(function(){
alert("hello22");
loadDataFN(1);
});