繁体   English   中英

未捕获的TypeError:无法读取null index.html:24的属性“ checked”

[英]Uncaught TypeError: Cannot read property 'checked' of null index.html:24

我是JavaScript的新手,希望您可以为我提供帮助,就像在主题上为null属性一样。

var add = document.getElementById('addition').checked;
var subs = document.getElementById('substraction').checked;
var multi = document.getElementById('multiplication').checked;
var div = document.getElementById('division').checked;

var result = 0;
    var x = parseInt(document.getElementById('firstNumber').value);
    var y = parseInt(document.getElementById('secondNumber').value);

function calculator() 
{
    if (add)
    {
        result = addition(x, y);
    }
    else if (subs)
    {
        result = substraction(x, y);
    }
    else if (multi)
    {
        result = multiplication(x, y);
    }
    else if (division)
    {
        result = division(x, y);
    };
}


<fieldset>
    <legend>Method</legend>
    <p><label><input type="radio" name="method" id="addition" />Addition</label></p>
    <p><label><input type="radio" name="method" id="substraction" />Substraction</label></p>
    <p><label><input type="radio" name="method" id="multiplication" />Multiplication</label></p>
    <p><label><input type="radio" name="method" id="division" />Division</label></p>
</fieldset>

<input type="submit" value="Submit" onclick="calculator();" />

然后我收到消息“未捕获的TypeError:无法读取null index.html:24的'checked'属性(匿名函数)”

请帮我。 问候!

页面上的DOM元素就绪之前,您的JavaScript代码正在执行。

在DOM准备好之后,您需要执行试图获取输入的代码。

(function () {
    if (window.addEventListener) {
        window.addEventListener('DOMContentLoaded', domReady, false);
    } else {
        window.attachEvent('onload', domReady);
    }
} ());

function domReady() {
    var add = document.getElementById('addition').checked;
    var subs = document.getElementById('substraction').checked;
    var multi = document.getElementById('multiplication').checked;
    var div = document.getElementById('division').checked;

    var result = 0;
    var x = parseInt(document.getElementById('firstNumber').value);
    var y = parseInt(document.getElementById('secondNumber').value);
}

似乎这里有几个问题。 某处可能还有更多代码? 或更多。 无论如何,我将继续并在实际调用函数时声明变量。

    function calculator() {
        var add = document.getElementById('addition').checked;
        var subs = document.getElementById('substraction').checked;
        var multi = document.getElementById('multiplication').checked;
        var div = document.getElementById('division').checked;

        var result = 0;
        var x = parseInt(document.getElementById('firstNumber').value);
        var y = parseInt(document.getElementById('secondNumber').value);

        if (add) {
            result = x + y;
        }
        else if (subs) {
            result = x - y;
        }
        else if (multi) {
            result = x * y;
        }
        else if (division) {
            result = x / y;
            alert("division");
        }


    }

我不知道您是否打算使用另一种除法方法,但是如果要选择两个除法单选按钮,并且要除以两个数字,则只需使用/。

您还可以使用选中单选按钮的事件来设置您的add,sub,multi,div变量。

正如帕特里克·埃文斯(Patrick Evans)所言,在渲染单选按钮之前,您无法查找单选按钮的值(我们可以使用$(document).ready()或如Patrick Evans所示进行操作。但是,我们可能不希望这样做查看它们的值,直到用户选择一个或单击您的按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM