Javascript getElementsByTagName返回字符串
我的最终目标是获得单选按钮列表并选中/取消选中它们。这是我的密码:Javascript getElementsByTagName返回字符串,javascript,Javascript,我的最终目标是获得单选按钮列表并选中/取消选中它们。这是我的密码: for (var radio in document.getElementsByTagName('input')) { if(typeof (radio) != "string") alert(radio); } 警报从未被调用 对document.getElementsByTagName的调用返回一个从0到列表长度的字符串列表,因此它们的所有属性(类型、id等)都未定义
for (var radio in document.getElementsByTagName('input')) {
if(typeof (radio) != "string")
alert(radio);
}
警报
从未被调用
对document.getElementsByTagName的调用返回一个从0到列表长度的字符串列表,因此它们的所有属性(类型、id等)都未定义,我无法对它们做太多处理
我做错什么了吗?为什么不为这些元素返回对象
这在Firefox4和chrome中,如果有帮助的话。尝试使用普通的for循环。for(x in obj)循环对象的属性,而不是数组的实际元素
var els = document.getElementsByTagName("input");
for ( var i=0; i<els.length; i++ ) {
var radio = els[i];
if ( typeof(radio) != "string" ) {
alert(radio);
}
}
var els=document.getElementsByTagName(“输入”);
for(var i=0;i尝试使用普通for循环。for(x in obj)循环对象的属性,而不是数组的实际元素
var els = document.getElementsByTagName("input");
for ( var i=0; i<els.length; i++ ) {
var radio = els[i];
if ( typeof(radio) != "string" ) {
alert(radio);
}
}
var els=document.getElementsByTagName(“输入”);
for(var i=0;igetElementsByTagName
返回一个NodeList
对象,该对象类似于Array
,因为它将任意数字索引原型化到该对象上
您应该not使用for..in
循环通过节点列表进行枚举
为什么?
因为for..in
迭代对象的所有属性,这将导致NodeList
中存在额外的不需要的属性以及任意原型索引
在它上面(顺便说一下,这也是属性。)
由于您正在迭代索引,因此保证不会得到除domeElement
对象之外的任何对象。因此,您不需要类型的
检查
所以,我想你是有意这么做的:
var els = document.getElementsByTagName('input');
for(var i = 0, j = els.length; i < j; i++) {
alert(els[i]);
}
getElementsByTagName
返回一个NodeList
对象,该对象是数组
——类似于它将任意数字索引原型化到它上面
您应该not使用for..in
循环通过节点列表进行枚举
为什么?
因为for..in
迭代对象的所有属性,这将导致NodeList
中存在额外的不需要的属性以及任意原型索引
在它上面(顺便说一下,这也是属性。)
由于您正在迭代索引,因此保证不会得到除domeElement
对象之外的任何对象。因此,您不需要类型的
检查
所以,我想你是有意这么做的:
var els = document.getElementsByTagName('input');
for(var i = 0, j = els.length; i < j; i++) {
alert(els[i]);
}
正如其他人所说,getElementsByTagName
返回一个NodeList
对象,您需要以不同的方式对其进行迭代。以下是一些实现检查/取消选中收音机的最终目标的方法
使用jQuery
$.each($('input[type="radio"]'), function () {
if (true) // Your condition for checking true
$(this).attr('checked','checked');
else
$(this).removeAttr('checked');
});
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){
var input = inputs.item(i);
if(input.type == "radio")
if (true) // Your condition for checking true
input.checked = "checked";
else
input.removeAttribute("checked");
}
}
不带jQuery
$.each($('input[type="radio"]'), function () {
if (true) // Your condition for checking true
$(this).attr('checked','checked');
else
$(this).removeAttr('checked');
});
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){
var input = inputs.item(i);
if(input.type == "radio")
if (true) // Your condition for checking true
input.checked = "checked";
else
input.removeAttribute("checked");
}
}
var inputs=document.getElementsByTagName('input');
对于(变量i=0;i
正如其他人所说,getElementsByTagName
返回一个NodeList
对象,您需要以不同的方式对其进行迭代。以下是一些实现检查/取消选中收音机的最终目标的方法
使用jQuery
$.each($('input[type="radio"]'), function () {
if (true) // Your condition for checking true
$(this).attr('checked','checked');
else
$(this).removeAttr('checked');
});
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){
var input = inputs.item(i);
if(input.type == "radio")
if (true) // Your condition for checking true
input.checked = "checked";
else
input.removeAttribute("checked");
}
}
不带jQuery
$.each($('input[type="radio"]'), function () {
if (true) // Your condition for checking true
$(this).attr('checked','checked');
else
$(this).removeAttr('checked');
});
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++){
var input = inputs.item(i);
if(input.type == "radio")
if (true) // Your condition for checking true
input.checked = "checked";
else
input.removeAttribute("checked");
}
}
var inputs=document.getElementsByTagName('input');
对于(变量i=0;i
是否尝试查找ifdocument.getElementsByTagName('input')。是否定义了radio
?是否尝试查找ifdocument.getElementsByTagName('input')。radio
是否定义了?这不是完全正确的,您可以使用for…in
循环对数组元素进行迭代,但您可能会得到比预期更多的元素(由原型链接引起)。顺便说一句,typeof(radio)
(您可以省略括号)将始终计算为object
,正如所有HTMLElements
所做的那样。这并不完全正确,您可以使用for…in
循环对数组元素进行迭代,但您可能会得到比预期更多的元素(由原型链接引起)。顺便说一句,typeof(radio)
(可以省略括号)将始终计算为对象
,就像所有HTMLElements
一样。一个类型的DomeElement
是否会计算为字符串
?我想你指的是DOM元素的节点列表
,与数组略有不同-@Russ哇,真不敢相信我忘记了。更新,thanks@MarcelKoppel从不,但typeof(DomeElement的类型)
总是会的。;-)正如你可能知道的,我是一名.NET开发人员:]谢谢你的帮助!一个类型的DomeElement
是否会计算为字符串
?我想你指的是一个DOM元素的节点列表
,与数组略有不同-@Russ哇,真不敢相信我忘记了。更新,thanks@MarcelKoppel从不,但typeof(typeof DomeElement)
永远都会。-)正如您可能知道的,我是.NET开发人员:]谢谢您的帮助!