动态获取网页上的每个复选框和文本框

时间:2015-05-07 09:25:05

标签: javascript html css

我有以下HTML行

<input name="1" title="" id="1"  style="position: absolute; top: 155px; left: 687px; tabindex: 3000; z-order: 99;" type="checkbox" CHECKED="checked" runat="server" value="on"/>

我想要的是一种获取多个复选框的方法,以便我可以通过以下javascript代码设置其选项卡索引:

var x = document.getElementById("1").tabIndex;  
document.getElementById("1").tabIndex = 1;

代码确实有效,但它只适用于我放置的样本行。我尝试将我的javascript放入for循环中,如下所示:

var elements = document.getElementsByName("1");
var i;
for(i = 0; i < elements.length; ++i)
{
    var x = document.getElementsByName(i).tabIndex;  
    document.getElementsByName(i).tabIndex = 1;
}

我通过创建我的HTML代码行的4个副本并且只改变它在CSS中的位置来运行它,但是代码没有像我希望的那样工作。

有人可以向我指出我做错了什么吗?

4 个答案:

答案 0 :(得分:1)

的情况下,

elementsCollection of elements

var elements = document.getElementsByName("1");

因此,请将for loop更改为:

var elements = document.getElementsByName("1");
var i;
for(i = 0; i < elements.length; ++i)
{
   elements[i].tabIndex = 1;  
}

答案 1 :(得分:0)

您可以使用

var inputs = document.getElementsByTagName("input");`

然后遍历数组并检查所需的类型(即复选框和文本)

喜欢这样

for(var i = 0; i < inputs.length; i++) {
    if(inputs[i].type == "checkbox" || inputs[i].type == "text") {
        //do whatever
    }  
}

答案 2 :(得分:0)

您的原始代码不起作用,因为您需要在循环中引用elements数组:

elements[i].tabIndex = 1;

也就是说,无论如何都使用getElementsByName是没有意义的,因为你的所有文本框和复选框肯定不会有相同的名称。

您可以使用querySelectorAll抓取所有文字输入和复选框,如下所示:

var elements = document.querySelectorAll("input[type=text], input[type=checkbox]");
var i;
for(i = 0; i < elements.length; ++i)
{
    elements[i].tabIndex = 1;
}

如果你需要支持IE7或更低版​​本,那么你必须得到所有输入,然后有一个条件来过滤文本框和复选框。

var elements = document.getElementsByTagName("input");
var i;
for(i = 0; i < elements.length; ++i)
{
    if(elements[i].type == 'text' || elements[i].type == 'checkbox'){
        elements[i].tabIndex = 1;
    }
}

答案 3 :(得分:0)

tabIndex 是html中的一个属性。

REAL_TIME
function set(){
var elements = document.getElementsByName("1");
var i;
for(i = 0; i < elements.length; ++i)
{
    elements[i].tabIndex = 1;
}
}