0

このコードを使用してテキストGET THIS TEXTを取得しようとしましたが、それでも失敗します。何が悪いのか分析できますか?

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

1 に答える 1

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派生させることができます。例えば:idthis.name.replace('pos', 'tweet')

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

実例| ライブソース

しかし、構造的に行うと、parentNodeに行きtd、次に に戻り、前の に行き、次にtrに行き、次にに行きます。previousElementSiblingtrlastElementChildtdfirstElementChilddiv

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

実例| ライブソース

于 2013-07-21T06:05:17.707 に答える