document.getElementById.innerHTML 工作不正常?

Bri*_*ian 3 html javascript innerhtml

我过去一直使用它,没有任何问题。这次我似乎无法弄清楚出了什么问题;也许我只需要第二双眼睛。

这是我的 HTML 代码:

<form id="myForm">
    <table>
        <tr>
            <th>Product</th>
            <th>Price</th>
        </tr>
        <tr>
            <td>2014 HK Army Hardline Paintball Jersey</td>
            <td>$89.95</td>
        </tr>
        <tr>
            <td>Planet Eclipse 2013 Distortion Gloves</td>
            <td>$34.95</td>
        </tr>
        <tr>
            <td>Eclipse Geo 3.5 Paintball Marker</td>
            <td>$1,600.00</td>
        </tr>
    </table>
    <p>How many Paintball Jerseys would you like to order?</p>
    <input id="jersey" type="number" value="0">
    <p>How many Paintball Gloves would you like to order?</p>
    <input id="gloves" type="number" value="0">
    <p>How many Paintball Markers would you like to order?</p>
    <input id="marker" type="number" value="0"><br>
    <input type="button" onclick="submit()" value="Submit Form">
    <input type="button" onclick="reset()" value="Reset Form"><br>
    <p id="result"> </p>
</form>
Run Code Online (Sandbox Code Playgroud)

还有我的 JavaScript 代码:

function submit() {
    document.getElementById("result").innerText = "hi";
}
Run Code Online (Sandbox Code Playgroud)

显然我用“嗨”作为测试。当我打开网站时,它没有显示我的光标在 p id="result" 中的位置。任何建议表示赞赏。

编辑:我知道它说,但我也尝试过,但仍然没有。document.getElementById("result").innerText = "hi";.innerHTML

Fel*_*ing 5

您看到此问题是因为您使用的是内联事件处理程序内联事件处理程序的范围有点棘手

长话短说:你根本没有调用你的submit函数。

<form>DOM 元素的方法在内联事件处理程序的范围内。因此,在事件处理程序中,submit不是指您的用户定义函数,而是指并调用myForm.submit,从而提交表单。

您可以通过与document.getElementById('myForm').submit(检查控制台)进行比较来轻松测试。

function submit() {
    // doesn't matter what's here  
}
Run Code Online (Sandbox Code Playgroud)
<form id="myForm">
    <input type="button" onclick="console.log('DOM element submit', submit === document.getElementById('myForm').submit);" value="Click me!">
</form>
Run Code Online (Sandbox Code Playgroud)

您可以通过重命名函数不使用内联 事件处理程序来解决该问题。


旁注:innerTextFirefox 不支持