[英]Selectors in javascript or Jquery
如何獲得相同類的特定選擇器的值?
function rev() {
var username = document.getElementByClass(value).value; /// or textContent;
return alert (username);
}
<a href="#" class="but" onclick="rev()">Hey</a>
<a href="#" class="but" onclick="rev()">Hey2</a>
<button class="but" onclick="rev()">hey</button>
<button class="but" onclick="rev()">NOww</button>
但是結果總是嘿
有任何想法嗎?
看起來您正在嘗試使用but
類來獲取每個元素的innerText
,然后根據所單擊的元素來alert
該value/innerText
。
您可以抓住所有buts
but
,然后為每個buts
supply提供onclick
方法,如下所示:
var buts = document.getElementsByClassName('but');
var keys = Object.keys(buts);
keys.forEach(function(but, idx) {
buts[idx].onclick = function() {
var username = buts[idx].innerText;
alert(username);
};
});
這將alert
first but
的Hey
, second but
Hey2
,等等。。。您可以在此處查看示例:
您所提出的問題有多個問題,我假設它是偽代碼,因為它甚至還不及返回書面形式的“嘿”。
首先,我相信您打算使用getElementByClassName ,而不是'getElementByClass'
其次,我認為您想要textContent
,而不是clicked元素的value
。
但就您的問題而言,我認為問題是您在打電話:
document.getElementByClassName('but').value
這實際上意味着,當調用rev()時,它將在文檔中搜索.but
所有實例, .but
查找一個名為“值”的對象屬性...
相反,您只需要其onclick
事件已被觸發的元素的textContent。 為此,您需要在事件處理程序函數rev()
捕獲事件。
這里是您可以附加的方式rev()
函數的“click”事件處理程序與類名的文件中的所有項目.but
-注意,我刪除從HTML onclick屬性的功能REV(),而是將其添加當.map()
循環並調用button.addEventListener()
時,執行每個元素:
var buts = document.getElementsByClassName('but'); var buttons = Array.prototype.slice.call(buts); buttons.map(function(button) { button.addEventListener('click', rev); }); function rev(e) { // This is the element targeted by the current event. var element = e.target; // Assuming you want 'Hey', 'Hey2', etc. var value = element.textContent; alert(value); }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <a href="#" class="but">Hey</a> <a href="#" class="but">Hey2</a> <button class="but">hey</button> <button class="but">NOww</button> </body> </html>
答案很簡單:要從正在監聽事件的元素中獲取特定值,您必須捕獲事件對象-事件對象的'target'屬性是監聽事件的元素。
您可以使用jquery中的每個函數來獲取文本
$('.but').each(function(){
$(this).text() // you can access any attribute for this class
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.