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

use*_*532 12 html javascript

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

这是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(){
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

Dee*_*epu 17

你没有带id的元素u.这就是错误发生的原因.请注意,全局变量document.getElementById("u").value意味着您尝试使用名称获取input元素的值,u而不是在代码中定义它.

  • 不是全局变量.document.getElementById("u").value表示您正在尝试获取名为"u"的输入elemnet的值,并且未在代码中定义. (4认同)

MJM*_*rty 7

问题可能在于代码正在执行.如果您是执行JavaScript的文档的负责人,即使您的网页中有一个id ="u"的元素,代码也会在DOM加载完成之前执行,因此HTML中并没有真正存在. ..您可以通过将代码移动到结束html标记上方的页面末尾来解决此问题.这是使用jQuery的一个很好的理由.


Iva*_*own 5

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


pie*_*ard 1

好像是这个功能

h_url=document.getElementById("u").value;
Run Code Online (Sandbox Code Playgroud)

您可以帮助自己使用一些“console.log”来查看哪个对象为空。