我尝试使用此代码获取文本获取此文本,但仍然失败。 你能分析出错了什么吗?
<table class="table table-bordered" border="1">
<tbody>
<tr>
<td rowspan="2"><div id="foto"><img src="http://a0.twimg.com/profile_images/378800000163861066/61dee118c22e6ddb6fea2ffdb2957bd7_normal.jpeg"></div></td>
<td><div id="tweet31898">**GET THIS TEXT**</div>
</td>
</tr>
<tr>
<td>
<input type="radio" name="pos31898" value="POS" onclick="addPOS(this.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-success">Pos</span>
<input type="radio" name="pos31898" value="NON" onclick="addNON(this.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-warning">Non</span>
<input type="radio" name="pos31898" value="NEG" onclick="addNEG(this.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-important">Neg</span>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
在pos31898
查找实例, 没有previousElementSibling
,它是其容器中的第一个元素。如果你缩进HTML,这就更明显了:
<table class="table table-bordered" border="1">
<tbody>
<tr>
<td rowspan="2">
<div id="foto"><img src="http://a0.twimg.com/profile_images/378800000163861066/61dee118c22e6ddb6fea2ffdb2957bd7_normal.jpeg"></div>
</td>
<td>
<div id="tweet31898">**GET THIS TEXT**</div>
</td>
</tr>
<tr>
<td>
<input type="radio" name="pos31898" value="POS" onclick="addPOS(this.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-success">Pos</span>
<input type="radio" name="pos31898" value="NON" onclick="addNON(this.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-warning">Non</span>
<input type="radio" name="pos31898" value="NEG" onclick="addNEG(this.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.previousElementSibling.innerHTML+' ');"><span class="label label-important">Neg</span>
</td>
</tr>
</tbody>
</table>
当然,简单的方法是document.getElementById("tweet31898")
,因为id
上有一个div
。由于您的单选按钮在name
中包含该号码,因此您可以使用id
派生this.name.replace('pos', 'tweet')
。 E.g:
onclick="addPOS(document.getElementById(this.name.replace('pos', 'tweet')).innerHTML + ' ')"
但是从结构上来说,你希望parentNode
转到td
,然后再转到tr
,然后previousElementSibling
获取前一个tr
然后lastElementChild
转到td
,然后firstElementChild
转到div
:
onclick="addPOS(this.parentNode.parentNode.previousElementSibling.lastElementChild.firstElementChild.innerHTML + ' ')"