我有以下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中的位置来运行它,但是代码没有像我希望的那样工作。
有人可以向我指出我做错了什么吗?
答案 0 :(得分:1)
elements
是Collection 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;
}
}