[英]Getting calling element (anchor) dynamically with JavaScript
我將如何使用JavaScript獲取錨標記的文本。 我知道如何通過在標簽上附加一個ID來做到這一點,但我想知道是否還有使用“this”關鍵字來做到這一點。
示例HTML代碼段:
<ul>
<li><a href="javascript:alertText(this);">Link One</a></li>
<li><a href="javascript:alertText(this);">Link Two</a></li>
</ul>
JavaScript功能:
function alertText(callingElement) {
alert(callingElement.text);
}
這不起作用(警報打印出“未定義”)因為“this”關鍵字似乎指向Window對象而不是調用該函數的錨。
如果有必要,可以使用JQuery。
您可以使用.innerHTML
,但要傳遞this
,您需要使用onclick
屬性。
<ul>
<li><a href="#" onclick="alertText(this);">Link One</a></li>
<li><a href="#" onclick="alertText(this);">Link Two</a></li>
</ul>
JS:
function alertText(callingElement) {
alert(callingElement.innerHTML);
}
或者您可以使用.innerText
或.textContent
具體取決於用戶的瀏覽器。
JS:
function alertText(callingElement) {
alert(callingElement.textContent || callingElement.innerText);
}
更新:
啊,等等,它是一個錨元素,所以它有一個.text
屬性,所以你的原始函數會起作用(至少在支持HTML5的瀏覽器中)。
JS:
function alertText(callingElement) {
alert(callingElement.text);
}
將其從href更改為onclick:
<ul>
<li><a href="#" onclick="alertText(this)">Link One</a></li>
<li><a href="#" onclick="alertText(this)">Link Two</a></li>
</ul>
和你的JavaScript如下:
function alertText(callingElement) {
alert(callingElement.textContent || callingElement.innerText);
}
示例: http : //jsfiddle.net/manseuk/q8Q7A/1/
或者內聯jQuery - >
<ul>
<li><a href="#" onclick="alert($(this).text())">Link One</a></li>
<li><a href="#" onclick="alert($(this).text())">Link Two</a></li>
</ul>
內聯事件處理程序很討厭。 既然你表示jQuery是一個選項,我很想做到這樣:
<ul class="alertList">
<li><a href="#">Link One</a></li>
<li><a href="#">Link Two</a></li>
</ul>
JS:
$(function() { //document ready function
$('.alertList').on('click', 'a', function(event) {
event.preventDefault();
alert($(this).text()); // jQuery
// alert(this.text); // plain JS? Didn't actually test
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.