2013-04-26 112 views
3

我正在阅读一本书,它似乎是正确的,但下面的代码不断给我错误:无法设置属性'nodeValue'为null。代码对我来说很有意义,但我不明白为什么点击清除按钮时无法清除文本值。无法设置属性'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> 
+0

更改为$(“英里数”).get(0).firstChild.nodeValue =“”和其他类似。这应该能解决你的问题。 – vishakvkt 2013-04-26 23:39:10

+1

@elclanrs - 我不确定他们是否使用jQuery,因为如果它是jQuery,$(“miles”)'将不起作用。我想知道'$'是否是'document.getElementById()'的同义词。也没有,这个问题上没有jQuery标签。 – jfriend00 2013-04-26 23:39:18

+0

致OP。什么是您的项目中的'$'。它是jQuery吗?或者它是'document.getElementById()'?另外,请向我们展示相关的HTML,以便我们了解您的JavaScript是否适当地定位了正确的对象。 – jfriend00 2013-04-26 23:40:49

回答

1

输入元素没有子节点,以便firstChild给你空,更进一步,如果你想清除的价值输入字段使用value属性。

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

我想你想,这是什么地方使用.value属性上直接输入字段:

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

这里有什么解释继续。现在我们可以看到整个页面,看到$document.getElementById(),问题是您的一些节点没有firstChild。

例如,带有id="miles"的对象是输入标签,它没有子女,因此.firstChildnull

在这一行:

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

$("miles")让你的DOM对象。

$("miles").firstChild由于没有该DOM对象的子元素而返回null。

$("miles").firstChild.nodeValue = "";是一个错误,因为$("miles").firstChildnullnull不具有财产.nodeValue

+0

好的,我找出了其余的。我只需要使用'$(“miles”)。value =“”;'。感谢您的澄清! – oxxi 2013-04-26 23:51:57

+1

@oxxi - 当我在评论中加入了大量的工作,让你向我们展示我们需要什么来帮助你,并且我还提供了正确的答案时,为什么你选择了不同的答案作为最佳答案?我提供了第一个答案,并提供了有关您的原始代码出现问题的详细解释? – jfriend00 2013-04-26 23:57:16

+0

@ jfriend00你认为帮助,努力工作和一个很好的解释是值得接受的吗? :) – Ian 2013-04-27 00:02:10

0

看着你在评论中发布的代码,问题是$("miles")和其他元素没有任何孩子。

好像你正在试图做这样的事情:

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

既然您可以看到HTML,那么相当清楚的是,在此处定位的对象是输入字段,他们从来没有孩子。 – jfriend00 2013-04-26 23:51:25