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

时间:2013-08-15 19:59:16

标签: javascript properties null

我是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的属性'已检查' (匿名函数)“

请帮帮我。 迎接!

2 个答案:

答案 0 :(得分:6)

您的javascript代码在DOM元素在页面上准备就绪之前正在执行。

在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);
}

答案 1 :(得分:0)

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

    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,subs,multi,div变量。

正如帕特里克·埃文斯所说,你无法在单选按钮被渲染之前查找单选按钮的值(我们可以使用$(document).ready()或者像Patrick Evans那样。但是我们可能在用户选择一个或单击您的按钮之前,不要查看它们的值。