未捕获的TypeError:无法设置null的属性“value”

时间:2013-04-19 08:36:09

标签: javascript html

我正在尝试使用ajax请求将输入的文本传递给控制器​​。但是当我试图执行JS文件时,我得到错误“Uncaught TypeError:无法设置null的属性'值”..

这是HTMLcode:

<form action="">
    <input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
    <input type="button" class="searchbox_submit1" name="submit" value="text" onClick="javascript:getSearchText();">
</form>

这是JS代码:

function getSearchText() {
    var searchText = document.getElementByName("search").value;
    h_url=document.getElementById("u").value;
    var theURL = h_url+'search_all/' + deptid + '/' + searchText + '/1';
    $.ajax({
        url : theURL,
        fail: function(){
        },
        success : function() {
        },
        error:function(){
        }
    });
}

请帮我解决这个问题。

8 个答案:

答案 0 :(得分:15)

您没有ID为u的元素。这就是错误发生的原因。 请注意,全局变量document.getElementById("u").value表示您尝试获取名称为u且未在代码中定义的input元素的值。

答案 1 :(得分:5)

问题可能在于执行代码。如果你是执行JavaScript的文档的头部,即使你有一个id =&#34; u&#34;在你的网页中,代码在DOM加载完成之前执行,因此HTML还没有真正存在......你可以通过将代码移动到结束html标记上方的页面末尾来解决这个问题。这是使用jQuery的一个很好的理由。

答案 2 :(得分:3)

问题在于,您还没有任何ID为u的元素,因此您调用的内容并不存在。
要解决这个问题,你必须为元素添加一个id。

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />


而且我也看到你为输入添加了一个值,所以这意味着输入不是空的,它将包含 text 。结果placeholder无法显示。

最后有一个警告,W3Validator会说因为&#34; /&#34;到底。 :

  

对于当前文档,验证器解释字符串,例如根据遗留规则打破大多数作者的期望,从而导致混淆来自验证器的警告和错误消息。此解释由HTML 4文档或其他基于SGML的HTML文档触发。要避免这些消息,只需删除&#34; /&#34;在这种情况下的角色。注意:如果您希望&lt; FOO /&gt; 被解释为 XML兼容&#34;自我关闭&#34;标记,然后您需要使用 XHTML HTML5

总之,它说你必须删除斜线。只需写下:

<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item...">

答案 3 :(得分:2)

我知道我对这个答案来说太迟了,但我希望这会对其他面临和将要面对的人有所帮助。

正如您所写,h_url是全局变量,如var = h_url;,因此您可以在文件的任何位置使用该变量。

  • h_url=document.getElementById("u").value; 这里h_url包含用户键入的搜索框文本值的值。

  • 的document.getElementById( “U”); 这是表单字段的标识符,其中包含一些特定的ID

  • 没有id

    的搜索字段

    <input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • 使用id

    更改搜索字段

    <input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />

  • 当您点击提交时,会尝试从document.getElementById("u").value;获取值,这在语法上是正确的,但您尚未定义ID,以便返回null

  • 因此,请确保在使用表单字段时首先定义该ID并执行其他任务信函。

我希望这对您有所帮助,永远不会出现Cannot set property 'value' of null错误。

答案 4 :(得分:1)

似乎是这个功能

h_url=document.getElementById("u").value;

你可以帮助自己使用一些'console.log'来查看哪个对象是空的。

答案 5 :(得分:1)

h_url=document.getElementById("u")此处为空

不存在id为u

的元素

答案 6 :(得分:1)

如果有人因此问题登陆此页面,我发现如果您的表单准备就绪之前您的JavaScript在HEAD中运行,则会发生此错误。将JavaScript移动到页面底部可以根据我的情况修复它。

答案 7 :(得分:0)

由于该元素在js中不可见,因此出现此错误,请尝试从UI检查元素并将其粘贴到javascript文件中:

之前:

document.getElementById('form:salesoverviewform:ticketstatusid').value =topping;

之后:

document.getElementById('form:salesoverviewform:j_idt190:ticketstatusid').value =topping;

Divya Akka的积分.... :)