停止自动触发Javascript功能的一部分

时间:2018-07-19 15:38:03

标签: javascript

是否可以停止脚本并在继续输入之前等待用户输入? 这是我需要停止的部分:

  var nName = document.getElementById("b1");
  nName.innerHTML = "Continue";
  document.getElementById("b1").onclick = newName();

“ b1”是一个HTML按钮,我想在之后将其停止

nName.innerHTML = "Continue";

并等待用户点击按钮后再发射

document.getElementById("b1").onclick = newName();

使用return完全停止脚本。还有其他可能的方法吗?

1 个答案:

答案 0 :(得分:0)

您不需要停止脚本。你不能。

像这样传递对函数的引用(函数名称上没有括号):

document.getElementById("b1").onclick = newName;

示例:

function firstClick(){
  document.getElementById('b1').innerHTML = "Continue"
  // override the first click listener. "firstClick" will no longer be called.
  document.getElementById('b1').onclick = newName;
}
function newName(){
  document.getElementById('b1').innerHTML = "Good Job!"
}

// listen for first click
document.getElementById('b1').onclick = firstClick
<button id=b1>Click Me!</button>

为了完全了解正在发生的事情,我必须推荐您使用Google和文档,尤其是实验。

但是简而言之,不是技术术语。

onclick本身不执行任何操作。需要告诉它做什么。浏览器将执行您告诉它的操作。只能分配1个功能。因此,如果您执行onclick=a; onclick=b; onclick=c,则只会调用c

如果为函数名称分配了括号onclick = newName(),那么您正在执行的是运行newName()并将其返回值分配给onclick。所以在这种情况下-什么都没有。如果您执行onclick=newName,则浏览器会自动添加括号。


您甚至可以创建“分类”功能来决定下一步是什么:

function triage(){
  var el = document.getElementById('b1');
  if (el.innerHTML == "Continue"){
    el.innerHTML = 'Good Job!';
  }else{
    el.innerHTML = 'Continue';
  }
}

// listen for first click
document.getElementById('b1').onclick = triage
<button id=b1>Click Me!</button>