1

我是 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();" />

他们我收到消息“未捕获的类型错误:无法读取空 index.html:24 的属性'已检查'(匿名函数)”

请帮我。问候!

4

2 回答 2

6

在页面上的 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);
}
于 2013-08-15T20:06:45.987 回答
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 变量。

正如 Patrick Evans 所说,在单选按钮被渲染之前,您无法查找单选按钮的值(我们可以使用 $(document).ready() 或如 Patrick Evans 所示。但是我们可能不想要查看它们的值,直到用户选择一个或单击您的按钮。

于 2013-08-15T20:40:58.317 回答