2013-07-21 28 views
0

我尝试获取文本使用此代码获取此文本,但仍然失败。 你可以分析什么是错的?在pos31898js - 使用previouselementsibling获取文本

<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

寻找例如,它没有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"),因为有一个在divid。由于您的单选按钮在name中有该号码,因此您可以使用this.name.replace('pos', 'tweet')推导出id。例如:

onclick="addPOS(document.getElementById(this.name.replace('pos', 'tweet')).innerHTML + ' ')" 

Live Example | Live Source

但结构上做它,你想parentNode去的td,然后再次去了tr,然后previousElementSibling拿到以前tr,然后lastElementChild下井的td,然后firstElementChild才能到div

onclick="addPOS(this.parentNode.parentNode.previousElementSibling.lastElementChild.firstElementChild.innerHTML + ' ')" 

Live Example | Live Source

+0

感谢您的回应。我知道如果使用id获得elemetn,但我有像我的帖子上面的情况,可悲的是我不能使用getelementbyid – user2597016

+0

@ user2597016:你可以用你发布的内容,注意这个例子。但正如你在评论我正在撰写如何在结构上做到这一点。 –

+0

好的。我会先试一试 – user2597016