3

前の兄弟の名前を取得する必要があります。簡単にするために、いくつかのサンプルコードがあります

<html>

 <head>
   <script type="text/javascript">
     function myFunction()
     {
      var itm=document.getElementById("item2");  
      alert(itm.previousSibling.name);
     }
   </script>
 </head>

 <body>
  <p name='pn'>paragraph</p>
  <button id='item2' onclick="myFunction()">Try it</button>
 </body>
</html>

編集:

<table id="sort">
    <tr name="nodrag nodrop">
        <td colspan=3><strong><a style="cursor:pointer;" class="toggle">Group 1</a></strong>  </td>
        <td style="text-align: right;"><a class="button3" href="#" ><span> Edit </span></a> <a class="button3" href="#" ><span> Delete </span></a></td>
    </tr>
    <tr id="1" class="tr_group"'>
        <td style="width:10px;" class="dragHandle">&nbsp;</td>
        <td><a href=# style="margin-left: 20px;">Umair Iqbal</a></td>
        <td><span style="font-size: 12px; color: #999; line-height: 100%;">A Student at TUM</span></td>
        <td style="text-align: right;"><a class="button3" href="#" ><span> Edit </span></a> <a class="button3" href="#" ><span> Delete </span></a></td>
    </tr>

最初の行は、2番目の行の前の兄弟です。1行目の名前が欲しいのですが、すべてのIDが動的になります

ありがとう

4

2 に答える 2

9

jQueryを使用すると、次のようになります。

$('#item2').prev().attr("name")​​​​​​​​​​;​

通常のJavaScriptでは、次の関数を使用する必要があります(空白ノードが無視されるようにするため)

getPreviousSiblingName(document.getElementById("item2"))

function getpreviousSiblingName(element) {
    var p = element;
    do p = p.previousSibling;
    while (p && p.nodeType != 1);
    return p.attributes["name"].value;
}
于 2012-06-07T00:27:02.987 に答える
7

これpreviousSiblingは、要素ノードではなくテキストノードになる可能性が高いためです。previousElementSibling(サポートされている場合)またはnodeTypeが(Node.ELEMENT_NODE)になるまでを取得するループが必要previousElementです。1

さらに、要素にnameは適用されません( https://developer.mozilla.org/en/DOM/Element.nameを参照)。カスタム属性(この場合はHTML5属性など)を使用すると、より良い結果が得られる可能性があります。したがって、データセットを使用して属性の値、または汎用のgetAttributeを取得します。pdata-*data-name

もちろん、jQueryのようなライブラリは、これらすべてを抽象化するのに役立ちます。説明は、単なるバニラJavaScriptに関連しています。

于 2012-06-07T00:37:06.987 に答える