这是我的代码,不工作请帮助我想使用一个提交按钮调用两个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>
答案 0 :(得分:0)
您需要定义一个处理此操作的函数。最好将变量存储在可以保存点击状态的位置。这是一个例子:
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++;
}
&#13;
<input type="button" onclick="scrollWin(this)" value="Click Me" />
<p id="demo"></p>
&#13;
答案 1 :(得分:0)
你需要掌握基本面。函数调用将具有自己的作用域,一旦函数的作用域结束,变量就会被销毁。我想你想捕获元素的第二次点击。
请勿尝试声明相同的全局变量,但尝试在第一次单击时设置elements属性,您可以在第二次单击时访问该属性。点击后阅读该属性,然后进行操作。
我建议你将点击事件称为
onclick="click123(this);"
并使用此选项使用setAttribute
答案 2 :(得分:0)
我认为这完成了你描述的内容。您需要在点击按钮时传递并阅读按钮文本,但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>
答案 3 :(得分:0)
据我所知,你想在同一个按钮上执行两个操作但是在两个不同的条件下,如果你想执行保持状态并按照那样执行动作。像:
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>";
}
}
如果您想将name属性更改为其他内容,则可以执行此操作,并且您不必为此更改JS代码。