Javascript 获取数组中的所有标记并引用它

Javascript 获取数组中的所有标记并引用它,javascript,html,html-table,html-parsing,Javascript,Html,Html Table,Html Parsing,我试图获取数组中标记中的所有标记,并尝试将其引用为arrayname[1],arrayname[2]。然后,我希望使用idArr[1]为标记设置一个唯一的title属性 下面是我编写的代码,它不起作用。有谁能告诉我哪里不对劲 <html> <head> <script type="text/javascript" > var idArr = []; var formm=document.getElementById("form1"); var trs = fo

我试图获取数组中标记中的所有标记,并尝试将其引用为arrayname[1],arrayname[2]。然后,我希望使用idArr[1]为标记设置一个唯一的title属性

下面是我编写的代码,它不起作用。有谁能告诉我哪里不对劲

<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>
我需要在javascript中动态引用每个TR元素,并设置一个title属性

您的代码获取tr元素并在其中循环是很好的,尽管您需要将其移到下面。根本不需要阵列,这就是你遇到麻烦的地方

你没有说你需要在标题中写些什么,只是直接写出来:

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

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


还要注意的是,代码在其下面的元素存在之前运行。您需要将代码移动到它所操作的元素下面。

就像您的帖子下面的评论一样,您的代码中有一个严重错误。请看评论

<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]。setAttributetitle,myClass


你好

需要考虑以下几点:

代码运行时元素不存在, 你所做的事情不需要数组。
因此,我去掉了额外的数组代码,并将脚本移动到页面底部,以便在加载上面的DOM之前脚本不会运行。

您能告诉我们您的最终游戏是什么吗?您是否希望更改值,只是引用内容?对这个问题再多了解一点会帮助我们给你多一点帮助。后面是一个jQuery。每一个都是更好的方式。你的代码毫无意义。idArr是一个数组,不以任何方式连接到DOM;它没有您试图在循环中显示的innerText属性,您输入的字符串也没有分配给它们的setAttribute方法。您的元素没有id值,因此idArr.pushtrs[i].id将被推入数组中。代码中没有任何意义。。。您正在将一个不存在的属性推入数组,然后期望从中得到一个innerText。为什么要选择downvote?他至少提供了他所拥有的。事实上这是错误的,这就是他为什么要问这个问题@达伦:从“向下投票”按钮上的工具提示来看:这个问题表明没有研究成果;这是不清楚或没有用处。只要稍加努力,比如说,与所有浏览器上存在的调试器一起浏览,甚至浏览一下关于如何编写JavaScript或DOM的奇怪文本,就可以解决大多数这些问题。但是是的,也许DV有点苛刻。我相信第二种方法是不正确的。是不是应该是trs[i].setAttributetitle,标题在这里;?
<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>
<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>