3

我正在浏览一本书,它似乎是正确的,但下面的代码不断给我错误:无法将属性“nodeValue”设置为 null。该代码对我来说很有意义,但我不明白为什么单击清除按钮时无法清除文本值。

var clear = function(){

        $("miles").firstChild.nodeValue = "";
        $("gallons").firstChild.nodeValue = "";
        $("mpg").firstChild.nodeValue = "";
         }

    window.onload = function () {
        $("calculate").onclick = calculateMpg;
        $("miles").focus();
        $("clear").onclick = clear;
    }   

html

<section>
    <h1>Calculate Miles Per Gallon</h1>
    <label for="miles">Miles Driven:</label>
    <input type="text" id="miles"><br>
    <label for="gallons">Gallons of Gas Used:</label>
    <input type="text" id="gallons"><br>
    <label for="mpg">Miles Per Gallon</label>
    <input type="text" id="mpg" disabled><br>
    <label>&nbsp;</label>
    <input type="button" id="calculate" value="Calculate MPG"><br>
    <input type="button" id="clear" value="clear"><br>
</section>
4

3 回答 3

2

我认为您想要的是.value直接在输入字段上使用该属性的地方:

var clear = function() {
    $("miles").value = "";
    $("gallons").value = "";
    $("mpg").value = "";
 }

这是对发生的事情的解释。现在我们可以看到您的完整页面并看到了,问题$document.getElementById()您是其中一些节点没有 firstChild。

例如,带有 an 的对象id="miles"是一个输入标签,它没有子标签,所以.firstChildnull

在这一行:

$("miles").firstChild.nodeValue = "";

$("miles")获取 DOM 对象。

$("miles").firstChild返回 null 因为该 DOM 对象没有子对象。

$("miles").firstChild.nodeValue = "";是一个错误,因为$("miles").firstChildisnull并且null没有 property .nodeValue

于 2013-04-26T23:37:59.097 回答
1

输入元素没有子节点,因此firstChild为您提供 null,如果您尝试清除输入字段的值,请使用该value属性。

var clear = function(){
    $("miles").value = "";
    $("gallons").value = "";
    $("mpg").value = "";
}
于 2013-04-26T23:48:14.203 回答
0

查看您在评论中发布的代码,问题在于$("miles")其他元素没有任何子元素。

看起来你正在尝试做这样的事情:

var clear = function() {
    $("miles").value = "";
    $("gallons").value = "";
    $("mpg").value = "";
}
于 2013-04-26T23:43:58.130 回答