どこかにアンカータグがある特定のDIV構造があります。リンクをクリックすると、親span
内の別のdiv
要素の値をフェッチして、何かを実行する必要があります(たとえば、警告します)。
Htmlは次のようなものです:
...
<div id="div1">
...
<span>This is reqd</span>
...
<a href="#">Click Me </a>
...
</div>
...
div
全体がページ内で何度も繰り返されます。 a
をクリックすると、「これは必須です」と警告したい。
このようにHTMLを検索できますか?
単一スパン要素の場合、それは非常に簡単なはずです。リンクをクリックしてmyFunction(this)を呼び出し、次のようにDOMを操作するだけです。
function myFunction(currObj){
var parentofSelected = currObj.parentNode; // gives the parent DIV
var children = parentofSelected.childNodes;
for (var i=0; i < children.length; i++) {
if (children[i].tagName = "span") {
myValue= children[i].value;
break;
}
}
alert(myValue); // just to test
} // end function
これがうまくいくことを願っています。それは私のためにした!
<span>
はその<a>
の直接の兄弟ではないため、.previousSibling
または.previousElementSibling
を呼び出すことはできません。最善の解決策は、parentを取得し、<span>
をクエリすることです。
document.getElementById( 'div1' ).getElementsByTagName( 'a' )[ 0 ].addEventListener('click', function() {
alert( this.parentNode.getElementsByTagName( 'span' )[ 0 ].textContent );
}, false);
<html>
<body>
<div id="div1">
<span>This is required</span>
<a href="#" onclick="myclick(this.parentNode)">Click Me</a>
</div>
</body>
<script>
function myclick(x){
var y = x.querySelector("span").innerHTML;
alert(y)
}
</script>
</html>
spanの代わりにclass name eggを与えることもできます。、
<span class="classname">This is required</span>
x.querySelector(".classname").innerHTML
JQueryの使用:
$('#innerId').siblings()