2016-10-25 366 views
0

我有一個onclick屬性指向函數test()的按鈕。獲取調用onclick函數的元素

<button onclick="test()">Button 1</button> 
<button onclick="test()">Button 2</button> 
<button onclick="test()">Button 3</button> 

功能測試():

function test() 
{ 
    var button_name = this.html; 
    console.log("Im button "+ button_name); 
} 

我怎樣才能獲得關於點擊的按鈕的信息? 例如我如何閱讀html?

的jsfiddlehttps://jsfiddle.net/c2sc9j9e/

回答

2

四個選項:

  1. this到函數。

    <button onclick="test(this)">Button 1</button> 
    

    然後在函數中使用該參數。

  2. addEventListener或jQuery的on連接處理程序,然後在處理程序中使用this

    var buttons = document.querySelectorAll("selector-for-the-buttons"); 
    Array.prototype.forEach.call(buttons, function(btn) { 
        btn.addEventListener("click", handler, false); 
    }); 
    function handler() { 
        // Use `this` here 
    } 
    

    jQuery的版本:

    $("selector-for-the-buttons").on("click", function() { 
        // Use `this` here 
    }); 
    
  3. 胡克的容器,這些按鈕是在一個單一的處理器,並使用事件對象,以確定哪些被點擊的target屬性(但要注意,如果您使用button內的其他元素,則需要先循環到button)。

    document.querySelector("selector-for-the-container").addEventListener("click", function(e) { 
        // Use `e.target` here 
    }, false); 
    

    jQuery的版本處理button內嵌套元素的可能性,爲您提供:

    $("selector-for-the-container").on("click", "button", function() { 
        // Use `this` here (note this is different from the DOM version above) 
    }); 
    
1

傳遞this參考功能,然後讀取textContent屬性節點的文本內容。

HTML

<button onclick="test(this)">Button 1</button> 

腳本

function test(elem){ 
    var button_name = elem.textContent; 
} 

Fiddle

1

\t function test(button) 
 
\t { 
 
\t  var button_name = button.getAttribute('name'); 
 
\t  console.log("Im button "+ button_name); 
 
\t }
\t <button onclick="test(this)" name="button1">Button 1</button> 
 
\t <button onclick="test(this)" name="button2">Button 2</button> 
 
\t <button onclick="test(this)" name="button3">Button 3</button>

1

如果你想使用Jquery,那麼你可以在函數中調用$(this)對象。

1

你必須通過 「本」 的功能

<button onclick="test(this)">1</button> 
<button onclick="test(this)">2</button> 
<button onclick="test(this)">3</button> 

<script> 
    function test(t) 
    { 
     console.log(t); 
    } 
</script> 
1

這裏是您的解決方案jsfiddle,使用jQuery。

<button onclick="test(this)">1</button> 
<button onclick="test(this)">2</button> 
<button onclick="test(this)">3</button> 

<script> 
    function test(button) 
    { 
     var button_name = $(button).html(); 
     alert("Im button "+ button_name); 
    } 
</script> 
1

只需添加ID到每個按鈕,並把它傳遞給你的測試功能

,這裏是working jsfiddle

<button onclick="test(this.id)" id="button1">1</button> 
<button onclick="test(this.id)" id="button2">2</button> 
<button onclick="test(this.id)" id="button3">3</button> 

<script> 
    function test(id) 
    { 
     var button_name = id; 
     alert("Im button name is : "+ button_name); 
     console.log("Im button name is :"+ button_name); 
    } 
</script>