2017-07-19 37 views
0

我有一樣的東西:使用相同的JavaScript用於不同的div

<div id="div1"><?php include 'test.php'; ?></div> 
<div id="div2"><?php include 'test.php'; ?></div> 

test.php是:

<button onclick="myFunction()">test</button> 

我怎麼能分別援引myFunctiondiv1div2?我的意思是,如果我點擊div1中的按鈕,myFunction只能在該div中完成。我發現了this javascript關鍵字,但我無法正確應用它。

請勿使用jQuery。

+5

您需要分享'myFunction'的代碼 – Satpal

+0

可能的重複:https://stackoverflow.com/q/13893138/457268 – k0pernikus

+0

這個按鈕是否真的是* test.php *中唯一的東西?如果沒有,我們可能需要知道那裏有什麼。你可能可以使用'this.parentNode.id'或其他東西,但這一切都取決於兩個'div'中的結構。 – myfunkyside

回答

0

檢查下面的代碼

<button onclick="myFunction.bind(this)">test</button> 
+0

爲什麼你認爲'.bind(this)'會解決他的問題? – Satpal

1

您可以在函數中添加的參數。

<div id="div1"><?php $button=1; include 'test.php'; ?></div> 
<div id="div2"><?php $button=2; include 'test.php'; ?></div> 

和你的PHP:

<button onclick="myFunction(<?php echo $button;?>)">test</button> 

所以,現在你可以使用這個參數知道被按下哪個按鈕。

1

您可以通過上下文的函數調用方法,像這樣:

<button onclick="myFunction.call(this)">test</button> 

然後,在你的功能,你可以通過使用this.parentElement檢索div元素。

function myFunction() { 
 
    document.getElementById('result').innerHTML = this.parentElement.id; 
 
}
<div id="div1"><button onclick="myFunction.call(this)">test</button></div> 
 
<div id="div2"><button onclick="myFunction.call(this)">test</button></div> 
 

 
<div id="result"></div>

+0

這可能是正確的方法,會嘗試。 –

1

這裏有一個解決方案:

function myFunction(ev) { 
 
\t console.log(ev.target.parentNode.id); 
 
}
<div id="div1"> 
 
    <button onclick="myFunction(event)">button 1</button> 
 
</div> 
 
<div id="div2"> 
 
    <button onclick="myFunction(event)">button 2</button> 
 
</div>

您可以在event對象,通過它你再收到點擊target和其parentNode傳球,即更正對應div

相關問題