Javascript document.getElementById(“id”)。当元素为空文本框时,返回null而不是空字符串

时间:2011-06-27 10:26:33

标签: javascript string dom null

我有一个文本框元素,我尝试使用document.getElementById("id-name").value访问其值。我发现调用返回null而不是空字符串。返回值的数据类型仍为字符串。 null是字符串值吗?

<input type="text" value="" id="mytext">是我尝试使用var mytextvalue = document.getElementById("mytext").value;

获取其值的文本框

9 个答案:

答案 0 :(得分:7)

发布HTML可能会有所帮助。相反,您可以先获取元素,然后检查它是否为null,然后询问其值,而不是直接询问值,而不知道该元素是否在HTML上可见。

element1 = document.getElementById(id);

if(element1 != null)
{
    //code to set the value variable.
}

答案 1 :(得分:4)

fyi,如果您在输入标记上使用html type =“number”属性,则会发生这种情况。输入非数字将在脚本知道发生了什么之前清除它。

答案 2 :(得分:2)

代码

var mytextvalue = document.getElementById("mytext");
如果您在此代码之前有mytextvalue语句,

null将包含document.write()。因此,删除document.write语句,您应该在变量mytextvalue中获得正确的文本对象。

这是由document.write更改文档造成的。

答案 3 :(得分:1)

请检查此fiddle,如果您收到空值警报,请告知我们。我在那里复制了你的代码并添加了几个警报。就像其他人一样,我也没有看到返回null,我得到一个空字符串。您使用的是哪种浏览器?

答案 4 :(得分:1)

This demo在Chrome 14,FF3和FF5(使用Firebug)中正确返回给我:

var mytextvalue = document.getElementById("mytext").value;
console.log(mytextvalue == ''); // true
console.log(mytextvalue == null); // false

并将console.log更改为alert,我仍然可以在IE6中获得所需的输出。

答案 5 :(得分:1)

我认为您尝试访问的文本框在您的javascript执行时尚未加载到页面上。

即,为了使Javascript能够从页面的DOM中读取文本框,文本框必须作为元素可用。如果在将文本框写入页面之前调用javascript,则文本框将不可见,因此返回NULL。

答案 6 :(得分:1)

try this...    
<script type="text/javascript">
    function test(){
    var av=document.getElementById("mytext").value;
    alert(av);
    }
    </script>

    <input type="text" value="" id="mytext">
    <input type="button" onclick="test()" value="go" />

答案 7 :(得分:0)

您似乎在HTML标记中省略了value属性。

将其添加为<input value="" ... >

答案 8 :(得分:0)

如果您使用外部 js 文件,请在关闭 <script src="fileName.js"></script> 标记之前在末尾添加 </html>。或在关闭 html 标签之前将 <script> 放在最后。