在Greasemonkey中使用JavaScript,我试图拉出单个单元格并读取每个单元格的innerHTML
以搜索给定的字符串。
有一个3x3的表,我想先按照中心的顺序搜索它们,然后根据情况,移动到不一定的线性进展(即左上,上,左,右上,下) - 左,右,下,右下)。
我已将每个单元格放入一个数组中,并使用splice()
,将单元格分配给变量。出于测试目的,我使用单元格变量本身抛出2个警报,然后单元格innerHTML
。
当我只使用变量时,提醒显示[object HTMLTableCellElement]
,但innerHTML
未定义。
我创建了一个模拟页面来展示我的例子。这是代码(Also at 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>
答案 0 :(得分:0)
center
不是元素,因此没有innerHTML
属性
center
是元素数组,因此如果您使用:
alert ("innerHTML: " + center[0].innerHTML);
你会看到你的期望。
~~~
该警告alert("center: "+center);
具有误导性,因为它显示<td>
与[<td>]
相同。
为了更准确(并且不那么讨厌)调试,请不要使用alert()
。使用console.log
,EG:console.log ("center: ", center);
- 这将显示数组与元素不同,并且不会抛出模态对话框。