Zoh*_*han 2 html javascript dom simple-html-dom
我需要得到以前兄弟姐妹的名字.保持简单我有一些示例代码
<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>
Run Code Online (Sandbox Code Playgroud)
编辑:
<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"> </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>
Run Code Online (Sandbox Code Playgroud)
Ist行是第二行的前一个兄弟.我想要第一行的名称,我所有的id都是动态的
谢谢
使用jQuery它将是:
$('#item2').prev().attr("name")??????????;?
Run Code Online (Sandbox Code Playgroud)
使用常规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;
}
Run Code Online (Sandbox Code Playgroud)
那是因为你很可能previousSibling是一个文本节点,而不是一个元素节点.你需要previousElementSibling(如果支持)或一个循环,将得到previousElement直至节点类型会1(Node.ELEMENT_NODE).
此外,name不适用于p元素(请参阅https://developer.mozilla.org/en/DOM/Element.name),如果您使用自定义属性(如HTML5 data-*属性,在您的情况下data-name可能),可能会更好因此,使用数据集来获取属性的值,或使用通用的getAttribute.
当然,像jQuery这样的库可以帮助抽象所有这些东西,解释只与vanilla JavaScript有关.