从 Javascript 中的 if 语句执行 DOM 的问题

Problem to execute DOM from if statement in Javascript

所以我尝试 运行 简单的函数,根据随机生成的数字生成获胜者。 到目前为止一切顺利,但是当我不仅要 return "winner" 还要 return 更改 innerHTML 时,它不会说“.innerHTML 不是函数”。

**我尝试 return 也作为 return 而不是 document.innerHTML... 另外,我尝试在 var 和 return var 中创建它,但总是出现同样的问题。

function runNum() {
  // randomize of number between 1-6
  var a = Math.floor(Math.random() * 6 + 1);
  var b = Math.floor(Math.random() * 6 + 1);
  console.log(a, b);
  if (a > b) {
    document.querySelector(".winnerclick").innerHTML("winner1");
    console.log("a");
  }
  if (b > a) {
    return document.querySelector(".winnerclick").innerHTML("winner2");
    console.log("b");
  }
  if (a === b) {
    document.querySelector(".winnerclick").innerTEXT("Draw - no winner");
  }
}
<h1 class="winnerclick">
  Click on the button to play!
</h1>
<button onclick="runNum()">
Click to start
</button>

我尝试找到答案,但没有解决这个问题。为什么没有 returned?

Pointy 是正确的,但我觉得他们的回答可能需要稍微澄清一下。当你想改变 .innerHTML 的值时,你不使用 .innerHTML("new value");你使用 .innerHTML = "new value";

实际上,您遇到的错误是正确的,因为 innerHTML 不是函数,所以您也不能用圆括号 调用它。你可以通过给它赋值来设置它的值。

所以你的最终代码应该是这样的:

function runNum() {
  // randomize of number between 1-6
  var a = Math.floor(Math.random() * 6 + 1);
  var b = Math.floor(Math.random() * 6 + 1);
  console.log(a, b);
  if (a > b) {
    document.querySelector(".winnerclick").innerHTML = "winner1";
    console.log("a");
  }
  if (b > a) {
    return document.querySelector(".winnerclick").innerHTML = "winner2";
    console.log("b");
  }
  if (a === b) {
    document.querySelector(".winnerclick").innerTEXT = "Draw - no winner";
  }
}
<h1 class="winnerclick">
  Click on the button to play!
</h1>
<button onclick="runNum()">
Click to start
</button>