2017-07-19 64 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

相关问题