-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

いくつかの考慮事項:

  • コードの実行時に要素は存在しません。
  • あなたがしていることにアレイは必要ありません。

<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>

そこで、余分な配列コードを削除し、スクリプトをページの下部に移動して、その上のDOMが読み込まれるまでスクリプトが実行されないようにしました。

于 2012-11-06T14:20:42.257 に答える
2

javascriptで各TR要素を動的に参照し、title属性を設定する必要があります。

要素を取得してループするコード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はインスタンスに反映されたプロパティです。そのため、これを行うには2つの方法があります)。HTMLElement

また、userSomeNumberHereが指摘しているように、コードはその下の要素が存在する前に実行されることに注意してください。コードを操作する要素の下に移動する必要があります。

于 2012-11-06T14:18:19.563 に答える
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 に答える