微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript 事件处理程序不起作用按钮点击 - 谷歌说为空

如何解决javascript 事件处理程序不起作用按钮点击 - 谷歌说为空

在这里查看了许多类似问题的线程,但收效甚微 - 我无法弄清楚这里到底出了什么问题。谷歌声称我试图引用的元素为空

Uncaught TypeError: Cannot read property 'addEventListener' of null at sales.js:12

无论我如何尝试修复它,它似乎都不起作用。正如您在 js 代码中看到的那样,我已经根据我在此处找到的内容尝试了多种修复方法

最初 HTML 文件中的 <script src ="sales.js"> 位于头部,但我在此处的一些页面中读到,将它放在那里可以使其在其他所有内容之前加载,并在 HTML 结束标记之前放下。

有什么建议吗?

HTML 代码

<!DOCTYPE html>
<html>
<head>
    <Meta charset="utf-8">
    <title>Sales Tax Calculator</title>
    <link rel="stylesheet" href="styles.css" />
</head>
<body>
<main>
    <h1>Sales Calculator</h1>
    <p>Complete the form and click "Calculate".</p>
    <fieldset>
        <legend>
            Item information
        </legend>
        <label for="item">Item:</label>
        <input type="text" id="item" ><br>

        <label for="price">Price:</label>
        <input type="text" id="price" ><br>

        <label for="discount">discount %:</label>
        <input type="text" id="discount" ><br>

        <label for="taxRate">Tax Rate:</label>
        <input type="text" id="taxRate" ><br>

        <label for="total">discount Price:</label>
        <input type="text" id="discountPrice" disabled ><br>

        <label for="salesTax">Sales Tax:</label>
        <input type="text" id="salesTax" disabled ><br>

        <label for="total">Total:</label>
        <input type="text" id="total" disabled ><br><br>

        <div id="buttons">
        <input type="button" id="calculate" value="Calculate" >
        <input type="button" id="clear" value="Clear" ><br></div>
    </fieldset>
    <pre>&copy; Fall 2020 Rob Honomichl - Dakota State University</pre>
</main>
</body>
<script src="sales.js"></script>
</html>

JS代码

//"use strict"

var $ = function (id) {
    return document.getElementById(id); 
};

//window.addEventListener("DOMContentLoaded",() => {
    //$("#calculate").addEventListener("click",processEntries);
//});

window.addEventListener('DOMContentLoaded',function () {
    document.getElementById("#calculate").addEventListener("click",processEntries);
});

//window.onload = function(){
    //$("#calculate").addEventListener("click",processEntries);
//};

const processEntries = () => {
    //Gather User Input
    //var item = document.querySelector("#item").value;
    var price = parseFloat(document.querySelector("#price").value).toFixed(2);
    var discount = parseInt(document.querySelector("#discount").value);
    var taxRate = parseInt(document.querySelector("#taxRate").value);

    //Calculate discounted Price
    function discountPriceCalc(price,discount) {
        const disPrice = price * (discount/100);
        return disPrice.toFixed(2);
    }

    //Calculate Sales Tax
    function salesTaxCalc(discountPrice,taxRate) {
        const taxTotal = price * (taxRate/100);
        return taxTotal.toFixed(2);
    }

    //Calculate Total
    function totalCalc(discountPrice,salesTax) {
         return ((Number(discountPrice) + Number(salesTax).toFixed(2)));
    }

    //Calculate the disabled text Box values
    var discountPrice = discountPriceCalc(price,discount);
    var salesTax = salesTaxCalc(discountPrice,taxRate);
    var Total = totalCalc(discountPrice,salesTax);

    //Update Text Boxes
    document.getElementById("discountPrice").value = discountPrice;
    document.getElementById("salesTax").value = salesTax;
    document.getElementById("total").value = Total;

    //set focus to Item Box after
    document.getElementById("item").focus();
};

解决方法

您需要去掉 getElementById 调用中的 # 以正确定位元素。

window.addEventListener('DOMContentLoaded',function () {
    document.getElementById("calculate").addEventListener("click",processEntries);
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?