1

innerHTMLGreasemonkey で JavaScript を使用して、個々のセルを取得し、各セルの を読み取って特定の文字列を検索しようとしています。

3×3の表があって、まず真ん中から順に検索していき、場合によっては必ずしも直線的でない順(左上、上、左、右上、左下、右、下、右下)。

各セルを配列に入れ、 を使用しsplice()てセルを変数に割り当てます。テスト目的で、 cell 変数自体、次に cell で 2 つのアラートをスローしますinnerHTML

変数を使用すると、アラートには と表示されます[object HTMLTableCellElement]が、innerHTML未定義です。

私の例を示すためにモックページを作成しました。これがコードです(jsBinでも)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<table>
<tr>
    <td>0</td>
    <td>1</td>
    <td>2</td>
</tr>
<tr>
    <td>3</td>
    <td>4<br>
        center
    </td>
    <td>5</td>
</tr>
<tr>
    <td>6</td>
    <td>7</td>
    <td>8</td>
</tr>
</table>
<script language="JavaScript">
    var tables = document.getElementsByTagName("table");
    tables[0].style.border = "thin solid red";
    tables[0].id = "grid";
    var grid = tables[0];
    var cells = new Array();
    cells[0] = grid.rows[0].cells[0]; // nw
    cells[1] = grid.rows[0].cells[1]; // n
    cells[2] = grid.rows[0].cells[2]; // ne
    cells[3] = grid.rows[1].cells[0]; // w
    cells[4] = grid.rows[1].cells[1]; // c
    cells[5] = grid.rows[1].cells[2]; // e
    cells[6] = grid.rows[2].cells[0]; // sw
    cells[7] = grid.rows[2].cells[1]; // s
    cells[8] = grid.rows[2].cells[2]; // se
    var grid_string = "";

    function HumanCount(cell) {
        var human_regex = /Human/;
        var humans = cell.innerHTML.split(human_regex);
        var humans_length = humans.length - 1;
        return humans_length;
    }
    for (a = 0; a < 9; a++) {
        cells[a].count = HumanCount(cells[a]);
        grid_string += cells[a].count + " ";
        if (a == 2 || a == 5) {
            grid_string += "<br>";
        }
    }
    var direction = 0; // nw
    var center = cells.splice(4, 1);

    alert("center: " + center);
    alert("innerHTML: " + center.innerHTML);
</script>
</body>
</html>
4

1 に答える 1

0

centerは要素ではないため、innerHTMLプロパティはありません。要素
centerの配列であるため、次を使用する場合:

alert ("innerHTML: " + center[0].innerHTML);

あなたはあなたが期待するものを見るでしょう。

~~~

と同じように表示されるため、このアラートalert("center: "+center);は誤解を招きます。<td>[<td>]

より正確な (そして煩わしさの少ない) デバッグを行うには、 を使用しないでくださいalert()。Use console.log, EG: console.log ("center: ", center);-- これは配列を要素とは異なるものとして表示し、モーダル ダイアログを表示しません。

于 2013-01-15T02:02:55.177 に答える