使用一个按钮一个接一个地调用两个js函数
问题描述:
这里是我的代码,不工作请帮助我想用一个提交按钮调用两个js函数。我尝试了下面的代码。但它给出了错误。使用一个按钮一个接一个地调用两个js函数
function scrollWin() {
// First time click
if (e.name != 'Click') {
e.name = "Click";
function scrollWin() {
window.scrollBy(0, 85);
}
}
// When click it again..
else if (e.name == 'Click') {
e.name = "Unclick";
function myFunction() {
document.getElementById("demo").innerHTML = "<h2> Second Click </h2>";
}
}
}
<input type="button" onclick="scrollWin(); this.style.visibility= 'hidden';
myFunction()" value="Click Me" />
<p id="demo"></p>
答
您需要定义一个函数处理这个动作。在可以保存点击状态的地方最好存储一个变量。这里有一个例子:
var clickCount = 0;
function scrollWin(button) {
// first click
if (clickCount === 0) {
window.scrollBy(0, 85);
}
// second or more click
else {
document.getElementById("demo").innerHTML = "<h2> Second Click </h2>";
button.style.display = 'none';
}
clickCount++;
}
<input type="button" onclick="scrollWin(this)" value="Click Me" />
<p id="demo"></p>
+0
@AmitTiwari我改编了它。我现在将该按钮作为参数传递,然后再次单击设置样式属性。 –
答
你需要打好基础。函数调用将有其自己的作用域,并且一旦函数的作用域结束,变量就会被销毁。我想你想捕获元素的第二次点击。
不要尝试声明一个全局变量,但尝试在第一次单击时设置elements属性,您可以在第二次单击时访问它。在点击后读取该属性,然后进行操作。
我建议你呼的一下事件作为
onclick="click123(this);"
,并使用它来设置使用setAttribute
答
我觉得这个完成你所描述的属性。你需要通过点击按钮并阅读按钮文本,但e.name
可能不会工作,你需要使用innerHTML
或textContent
。然后,您可以执行操作或调用您希望执行的功能,具体取决于第二次点击后更改的按钮文本。
function scrollWin(e) {
//First time click
if(e.textContent != 'Click'){
e.textContent = "Click";
window.scrollBy(0, 85);
}
else if(e.textContent == 'Click'){
e.textContent = "Unclick";
document.getElementById("demo").innerHTML = "<h2> Second Click </h2>";
}//end else
}//end function
<button onclick="scrollWin(this)">Click</button>
<div id="demo"></div>
答
我明白你想在同一个按钮,但在两个不同的条件下执行两个操作,如果要执行保持状态,并根据该再执行操作。像:
function scrollWin(e) {
var btn = e.target;
var state = btn.dataset.myattr;
if(state == 'state1'){
btn.dataset.myattr = 'state2';
e.name = "Click";
window.scrollBy(0, 85);
}else if (state == 'state2'){
btn.dataset.myattr = 'state1';
e.name = "Unclick";
document.getElementById("demo").innerHTML = "<h2> Second Click </h2>";
}
}
如果要更改名称属性别的东西,你可以做到这一点,你没有改变JS代码为。
什么是错误?从代码中不明显你想要完成什么。并且命名两个不同的功能同样的事情只是要求混淆。如果你想调用两个函数,那么你只需要调用一个接一个的函数。 'functionOne(); functionTwo();'什么问题? – David