当元素为空文本框时,Javascript中的document.getElementById("id").value返回null而不是空字符串

11
我有一个文本框元素,我试图使用document.getElementById("id-name").value访问它的值。 我发现该调用返回null而不是空字符串。 返回值的数据类型仍然是字符串。 'null'是字符串值吗? <input type="text" value="" id="mytext"> 是文本框,我正在尝试使用var mytextvalue = document.getElementById("mytext").value;获取它的值。

@BonyT,<input type="text" value="" id="mytext"> 是我正在尝试获取其值的文本框,使用 var mytextvalue = document.getElementById("mytext").value; - Guruprasad
http://jsfiddle.net/UVdVe/???看不到问题! - BonyT
9个回答

8
发布您的HTML可能会有所帮助。相反,您可以先获取元素,然后检查它是否为null,然后再请求其值,而不是直接请求值而不知道该元素在HTML上是否可见。
element1 = document.getElementById(id);

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

1
我正在尝试访问值为<input type="text" value="" id="mytext">的元素,使用document.getElementById("mytext").value返回null而不是""。该元素是一个文本框,因此非常明显可见。 - Guruprasad

4

提醒一下,如果您在输入标签中使用html type="number"属性,则可能会出现此问题。输入非数字内容将在脚本了解情况之前清除它。


2

针对您的代码

var mytextvalue = document.getElementById("mytext");

mytextvalue将包含null,如果在此代码之前有document.write()语句。因此,请删除document.write语句,您应该可以在变量mytextvalue中获得正确的文本对象。

这是由于document.write更改了文档而引起的。


1

这个演示在Chrome 14、FF3和FF5(使用Firebug)上对我来说都能正确返回:

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

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


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" />

1

看起来你在 HTML 标记中省略了 value 属性。

请添加它,如下所示:<input value="" ... >


即使使用 value="",返回的值仍然是 null 而不是 ""。 - Guruprasad
浏览器?我刚在最新的Opera、Chrome、FF4和IE8中检查了一下,结果是“”。 - Pavel Koryagin

1
请检查这个fiddle,并告诉我是否收到了空值警报。我已经将您的代码复制到那里,并添加了一些警报。就像其他人一样,我也没有看到返回空值,而是得到了一个空字符串。您使用的是哪个浏览器?

1

我认为你试图访问的文本框在执行你的JavaScript时还没有加载到页面上。

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


0
如果您正在使用外部JS文件,请在关闭标签之前添加<script src="fileName.js"></script>,或者将<script>放置在关闭HTML标签之前的末尾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接