- 想先检查一下,页面加载时文本框是否包含任何内容?
然后给它赋值。
if (document.getElementById("txtBoxID").value == null) { document.getElementById("txtBoxID").value = "Some text here"; }
但出现错误“JavaScript 运行时错误:无法设置未定义或空引用的属性‘值’”怎么办?
7 回答
为文本框值测试 null 是不安全的。您应该改用空字符串。我创建了一个 jsFiddle,它显示了这一点:
<input type="text" id="txtBx" />
document.getElementById("txtBx").value = null;
alert("test 1 textbox is null \n" + (document.getElementById("txtBx").value == null));
alert("test 2 textbox is empty string \n" + (document.getElementById("txtBx").value == ""));
(我正在使用 Chrome)
页面加载后,您是否在执行上面的代码?
window.onload = function() {
if (document.getElementById("txtBoxID").value == null) {
document.getElementById("txtBoxID").value = "Some text here";
}
}
请注意,这window.onload
不是检查页面是否已加载的最佳方法。这取决于浏览器的规格。请参阅 window.addEventListener 或 window.attachEvent 或 IE。
这是因为你的 DOM 还没有准备好,所以等到加载完成:
window.onload=function(){
if (document.getElementById("txtBoxID").value == null) {
document.getElementById("txtBoxID").value = "Some text here";
}
};
您可能正在尝试在页面中定义之前访问该元素,因此您应该在window.load
事件上执行该代码或在之前移动该代码</body>
作为替代方案,您可以使用placeholder
许多现代浏览器支持的属性
<input type="text" id="txtBoxId" placeholder="Some text here" />
如果输入没有值,则将显示占位符值
(此行为的 polyfills 可用于旧版浏览器)
您正在尝试访问空(或未定义)对象上的属性“值”,这会导致异常,假设您的 ID 可能不是txtBoxID
请尝试以下代码,您需要在该行中首先将值设置为 null
Name: <input type="text" id="myText" value=''>
这是演示:
function func() {
if (document.getElementById("myText").value == '') {
document.getElementById("myText").value = "Some text here";
} else {
alert("not null");
}
}
Name: <input type="text" id="myText" value="">
<p>Click the button to change the value of the text field.</p>
<input type="button" id="button" value="Click Me" onClick="func();" />
如果您有可用的 JQuery,这是完成您所要求的另一种方式。在 document.ready 函数中,您可以使用文本框的 id 获取文本的值并将其包装在 JQuery 中。这将允许您使用 .val() 函数在文本框为空的情况下检查和替换文本框的值
$(document).ready(function () {
if($('#id-of-your-textbox').val() == ' ')
{
$('#id-of-your-textbox').val('some text');
}
});