javascript - document.getElementById 不起作用,我该如何解决这个问题?

标签 javascript html dom

我有这个网站,可以将二次方程转换为顶点形式。

我所做的是添加一个带有输入的表单,您可以在其中添加转换方程所需的变量。我几乎完成了它,但是当我尝试使用 ID hk 调用 getElementById 时,文档无法调用,因为它是在用户点击提交按钮后定义,因此我无法在启动时加载该函数,这本来可以解决我的问题。

function abc(a, b, c) {
  var a_el = document.getElementById('a');
  var b_el = document.getElementById('b');
  var c_el = document.getElementById('c');
  var av = a_el.value;
  var bv = b_el.value;
  var cv = c_el.value;
  console.log(av);
  console.log(bv);
  console.log(cv);
  var h = (-1 * bv) / (2 * av);
  console.log(h);
  var k = (av * (Math.pow(h, 2))) + (bv * h) + cv;
  console.log(k);
  document.getElementById("av").innerHTML = av;
  document.getElementById("bv").innerHTML = bv;
  document.getElementById("cv").innerHTML = cv;
  document.getElementById("h").innerHTML = h;
  document.getElementById("k").innerHTML = k;
}
<form>
  <div class="form-group">
    <label>a:</label>
    <input type="text" class="form-control" id="a">
  </div>
  <div class="form-group">
    <label>b:</label>
    <input type="text" class="form-control" id="b">
  </div>
  <div class="form-group">
    <label>c:</label>
    <input type="text" class="form-control" id="c">
  </div>
  <input type="button" class="btn btn-default" name="submit" value="Submit" onclick="abc();"></input>
</form>
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mi>f</mi>
  <mo>(</mo>
  <mi>x</mi>
  <mo>)</mo>
  <mo>=</mo>
  <mn id="av"></mn>
  <msup>
    <mrow>
      <mo>(</mo>
      <mi>x</mi>
      <mo>-</mo>
      <mn id="h"></mn>
      <mo>)</mo>
    </mrow>
    <mrow>
      <mn>2</mn>
    </mrow>
  </msup>
  <mo>+</mo>
  <mn id="k"></mn>
  <math>

    </div>
    <div class="pull-right">
      <img src="quad.png" class="img-rounded pull-right thumbnail">
    </div>
    </div>
    </body>

最佳答案

它在代码片段中不起作用,主要是因为一些带有 ID 的标签未定义,也因为 JavaScript 自动包含在自执行匿名函数中 (function(){})()在 Stack Overflow 的代码片段中,因此 abconclick时函数未定义添加了处理程序。因此添加 click JavaScript 中的事件监听器也解决了这个问题。这只是为了让它在 Stack Overflow 的代码片段中运行。

您可以委托(delegate) onclick事件,或者您可以将脚本嵌入 <script> 中标记并将其添加到 HTML。

(function(){
  function abc() {
    var a_el = document.getElementById('a');
    var b_el = document.getElementById('b');
    var c_el = document.getElementById('c');
    var av = a_el.value;
    var bv = b_el.value;
    var cv = c_el.value;
    console.log(av);
    console.log(bv);
    console.log(cv);
    var h = (-1 * bv) / (2 * av);
    console.log(h);
    var k = (av * (Math.pow(h, 2))) + (bv * h) + cv;
    console.log(k);
    document.getElementById("av").innerHTML = av;
    document.getElementById("h").innerHTML = h;
    document.getElementById("k").innerHTML = k;
  }
document.getElementById("submit").addEventListener("click",function(){
  abc();
});
})();
<form>
                <div class="form-group">
                    <label>a:</label>
                    <input type="text" class="form-control" id="a">
                </div>
                <div class="form-group">
                    <label>b:</label>
                    <input type="text" class="form-control" id="b">
                </div>
                <div class="form-group">
                    <label>c:</label>
                    <input type="text" class="form-control" id="c">
                </div>
                <input type="button" class="btn btn-default" name="submit"       value="Submit" id="submit"></input>
            </form>
            <math xmlns="http://www.w3.org/1998/Math/MathML">
                <mi>f</mi>
                <mo>(</mo>
                <mi>x</mi>
                <mo>)</mo>
                <mo>=</mo>
                <mn id="av"></mn>
                <msup>
                    <mrow>
                        <mo>(</mo>
                        <mi>x</mi>
                        <mo>-</mo>
                        <mn id="h"></mn>
                        <mo>)</mo>
                    </mrow>
                    <mrow>
                        <mn>2</mn>
                    </mrow>
                </msup>
                <mo>+</mo>
                <mi id="k"></mi>
                <math>

    </div>
    <div class="pull-right">
        <img src="quad.png" class="img-rounded pull-right thumbnail">
    </div>
</div>
</body>

关于javascript - document.getElementById 不起作用,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886038/

相关文章:

javascript - react native : How to get <TextInput/> to start from right to left?

javascript - rails 5 : render partial in another partial with AJAX

html - 在 div 中显示 HTML 文件

javascript - 来自 Firefox 的错误 : MIME type (“text/plain” ) mismatch (X-Content-Type-Options: nosniff)

javascript - jQuery 多个可选择的列表项组

javascript - 在 play 2.0 框架上将 javascript 导入 html

html - CSS3 过渡 + 不显示 + 防止过度滚动

javascript - 动画和 DOM 重新排序后清除样式属性

javascript - 在 React 中渲染普通的 JavaScript

javascript - 在javascript中连续循环动画