以下内容未呈现我在Chrome或Firefox中可以看到的任何更改:
var field = document.getElementById( 'input-id' ), nodeName;
if ( field !== null ) {
nodeName = field.nodeName.toLowerCase();
if( nodeName === 'input' || nodeName === 'textarea' ) {
field.value = 'hello';
console.log( field.value );
}
}
以下是目标:
<input id="input-id" name="input-name" type="text" required="required" placeholder="example">
但是控制台报告了两者中的正确值。为什么?我正在使用经过验证的HTML5。该脚本位于结束body
标记之前。
答案 0 :(得分:1)
您正在使用,
而不是.
编辑您的代码,mate:
var field = document.getElementById( 'input-id' ).nodeName;
答案 1 :(得分:1)
由于您已经说明了以下情况,因此可能不是脚本加载问题:
该脚本位于结束正文标记之前。
您必须在页面上拥有多个具有相同id
的元素。查看您的来源(Firefox上的 Ctrl + U )并搜索 input-id 。确保页面上只有一个元素具有该ID。
您还可以通过在其他console.log
电话中添加以下内容来记录要更改的元素:
console.log( field );
这应该将整个元素记录到控制台,并帮助您进一步调试。
答案 2 :(得分:0)
试试这个
$(function() {
var field = document.getElementById( 'input-id' ), nodeName;
if ( field !== null ) {
nodeName = field.nodeName.toLowerCase();
if( nodeName === 'input' || nodeName === 'textarea' ) {
field.value = 'hello';
console.log( field.value );
}
}
});
或将您的脚本放在页面的末尾。
因为你的脚本在你的输入标签渲染之前正在执行它没有工作的原因。所以把它放在end或body load事件中,或者如果你使用jquery而不是放入文档就绪函数
答案 3 :(得分:0)
您的脚本可能在输入元素之前加载。
尝试将代码段放在页面底部。
答案 4 :(得分:0)
我认为您缺少添加onload function
。您可以将其添加到<body>
,如
<body onload="sumfunction();">
或在javascript中
<script>
window.onload = sumfunction;
</script>
以下是一个示例:http://jsbin.com/ezovun/1/edit
答案 5 :(得分:0)
事实证明,在我使用OP中的代码设置后,我意外地将输入值覆盖到脚本中其他地方的空字符串。我的console.log位于它所在的位置,在覆盖之前抓取了该值,这就是为什么它报告了正确的值,尽管在浏览器中得到了不同的结果。我为没有发布整个脚本而道歉,但我试图提供一个简化的例子。