我有几个<input>
标签。我希望将类型更改为数字,如果它是type="text"
,所以我创建一个循环函数,但这不起作用,并且不会出现错误。
(当我加载此页面时,我不知道如何让它从<input type="text">
更改为<input type="number">
,因为有很多标记,所以我认为使用for
循环很快
var a=document.getElementsByTagName("input")[i].getAttribute("type");
function setvalue(){
for(i=0;i<a.length;i++){
var b=document.getElementsByTagName("input")[i]
if (a="text"){
b.setAttribute("text","number");
}
}
}
我在其他页面中有多个<select>
标记,看起来像<select id="inp_015"> <select id="inp_025">... <select id="inp_105">..<select id="inp_205">
,最后一个数字是5,前面是01到20)
我想改变它的宽度。我在下面制作了一些代码,但也没有用。
for(i=0;i<3;i++){
for(i=1;y<10;i++){
document.getElementById("inp_"+"i"+"y"+"5").style.width="125px";
}
}
editted
function setwidth(){
for(i=0;i<3;i++){
for(y=1;y<10;i++){
document.getElementById("inp_"+i+y+"5").style.width="125px";
}}}
(我的脚本放在body标签的底部) 我希望我能知道哪个部分出了问题。
答案 0 :(得分:0)
我不确定你的代码的上下文,但它看起来很混乱。通过一些评论,这就是你想要做的事情。
function setvalue(){
var a=document.getElementsByTagName("input"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
var b=a[i]; //element in array
var c = b.getAttribute("type");//get type attribute of element
if (c == "text"){ //changed "=" (assignment operator) to "==" (comparison operator)
b.setAttribute("type","number"); //changed "text" to "type"
}
}
}
答案 1 :(得分:0)
完成代码:
第1行:var a=document.getElementsByTagName("input")[i].getAttribute("type");
此时i
为undefined
。因此,您获得带有“input”标签的所有元素的列表,然后从列表中获取一个元素并获取该元素的“type”属性的值。这可能会引发异常,因为对于未定义的索引,您将获得一个未定义的值,该值没有方法getAttribute()。即使它没有未定义,您也希望处理所有元素,而不仅仅是一个字符串。
第2行:function setvalue(){
for(i=0;i<a.length;i++){
var b=document.getElementsByTagName("input")[i]
if (a="text"){
b.setAttribute("text","number");
}
}
}
您定义了一个功能。实际上,由于提升,首先定义功能。但是在您显示的代码中永远不会调用此函数。
让我们回顾一下这个功能。
for(i=0;i<a.length;i++){
这看起来没问题,只是a
是一个字符串,而不是你要处理的元素数组。
var b=document.getElementsByTagName("input")[i]
这是一个功能,只要获得一个元素,但它是低效的,因为每次通过循环,你创建一个包含所有元素的新数组。
if (a="text"){
在此处检查在第1行检索到的(未定义)元素的“type”属性的值是否为文本。这与循环的迭代应处理的元素无关。
b.setAttribute("text","number");
您创建名为“text”的新属性并将其设置为“number”。这不会设置“type”属性。
您的代码可以修复,但我建议jQuery使这项任务更简单:$('input[type="text"]').attr('type', 'number')