-1

我正在尝试获取数组中<TR>标签内的所有标签,并尝试将其引用为arrayname[1], arrayname[2]。然后我期待为标签设置一个唯一的标题属性,使用<TABLE><TR>idArr[1].setAttribute("title", "myClass");

这是我编写的代码,它不起作用。任何人都可以指导我有什么问题!

<html>
<head>
<script type="text/javascript" >
var idArr = [];
var formm=document.getElementById("form1");
var trs = formm.getElementsByTagName("tr");
alert(trs.length);
for(var i=0;i<trs.length;i++)
{
   idArr.push(trs[i].id);
   alert(idArr.innerText);
}
idArr[1].setAttribute("title", "myClass");
</script>

</head>
<body>
<form id="form1">
<table border="1">
<tr>
<td>One</td>
<td>Two</td>
</tr>
<tr>
<td>ABC</td>
<td>EFG</td>
</tr>

</table>
</form>
</body>
</html>
4

3 回答 3

2

我需要在 javascript 中动态引用每个 TR 元素并设置标题属性。

您的代码获取tr元素并循环它们很好,尽管您需要移动它(更多内容见下文)。根本不需要阵列,这就是你遇到麻烦的地方。

你没有说需要在标题中添加什么,但直接这样做:

for(var i=0;i<trs.length;i++)
{
   trs[i].title = "The title goes here";
}

或者

for(var i=0;i<trs.length;i++)
{
   trs[i].setAttribute("title", "The title goes here");
}

title是实例上的反射属性HTMLElement,这就是为什么有两种方法可以做到这一点)。

另请注意,正如userSomeNumberHere 指出的那样,您的代码在其下面的元素存在之前运行。您需要将代码移动到它所操作的元素下方。

于 2012-11-06T14:18:19.563 回答
2

几个考虑:

  • 代码运行时元素不存在,
  • 你不需要 Array 来做你正在做的事情。

<html>
<head>
    <title>My Page</title>
</head>
<body>
    <form id="form1">
        <table border="1">
        <tr>
            <td>One</td>
            <td>Two</td>
        </tr>
        <tr>
            <td>ABC</td>
            <td>EFG</td>
        </tr>

        </table>
    </form>

 <!-- Now your script will not run until the elements above are loaded-->
    <script type="text/javascript" >
    var formm=document.getElementById("form1");
    var trs = formm.getElementsByTagName("tr");
    for(var i = 0, len = trs.length; i < len; i++) {
        trs[i].setAttribute("title", "myClass");
    }
    </script>

</body>
</html>

所以我去掉了额外的 Array 代码,并将脚本移动到页面底部,这样它就不会运行,直到它上面的 DOM 加载。

于 2012-11-06T14:20:42.257 回答
0

就像在您帖子下的评论中一样,您的代码中有一个严重错误。看评论(//...)

<script type="text/javascript" >
var idArr = []; //should rename to elemArr or somethink like this
var formm=document.getElementById("form1");
var trs = formm.getElementsByTagName("tr");
alert(trs.length);
for(var i=0;i<trs.length;i++)
{
   idArr.push(trs[i]); //here you push only the id and not the element
   alert(idArr.innerText);
}
idArr[1].setAttribute("title", "myClass");
</script>

但我不知道你为什么要通过 trs 数组并将其转换为另一个数组。你可以简单地使用这个:trs[1].setAttribute("title", "myClass");

问候!

于 2012-11-06T14:19:12.230 回答