Javascript input.value更改未显示在浏览器中
以下内容不会呈现我在Chrome或Firefox中看到的任何更改:Javascript input.value更改未显示在浏览器中,javascript,html,dom,Javascript,Html,Dom,以下内容不会呈现我在Chrome或Firefox中看到的任何更改: var field = document.getElementById( 'input-id' ), nodeName; if ( field !== null ) { nodeName = field.nodeName.toLowerCase(); if( nodeName === 'input' || nodeName === 'textarea' ) { field.value = 'h
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。脚本在结束
正文
标记之前。您使用的是,
而不是,
编辑您的代码,伙计:
var field = document.getElementById( 'input-id' ).nodeName;
试试这个
$(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或on body load事件中,或者如果您使用的是jquery,则放入document ready函数中。您的脚本可能是在输入元素之前加载的
尝试将代码片段a放在页面底部 我认为您缺少添加
onload函数
。您可以像这样将其添加到
中
或者使用javascript
<script>
window.onload = sumfunction;
</script>
window.onload=sum函数;
下面是一个示例:因为您已经声明了以下内容,所以可能不是脚本加载问题: 脚本位于结束正文标记之前 页面上必须有多个具有相同
id
的元素。查看源代码(Firefox上的Ctrl+U)并搜索输入id。确保页面上只有一个元素具有该id
您还可以通过在其他控制台中添加以下行来记录正在更改的元素。log
调用:
console.log( field );
这应该会将整个元素记录到控制台,并帮助您进一步调试。结果表明,在我使用OP.My console.log中的代码对其进行设置之后,我意外地将输入值覆盖到脚本中其他位置的空字符串中。在覆盖之前,我的console.log会捕获该值,这就是为什么它报告了正确的值,尽管在浏览器中得到了不同的结果。很抱歉没有发布整个脚本,但我试图提供一个简化的示例。不,我正在设置一个名为nodeName的变量,然后再为其赋值。对我来说,可能是控制台未定义。注释该行并检查。代码似乎工作正常
==
这是问题吗?您可以更改==
并查看吗?可能是分配和类型一起存在问题?@Sree控制台已定义。正如我所说,它报告了正确的值。问题在于,文本字段不能直观地反映更改,即使其值
属性能够反映更改@Sahal这只是一个带有严格类型检查的比较运算符。它不会对输入的值产生任何影响。我的脚本在结束正文标记之前。我已经这样做了。它指向正确的元素。除了这个id
@HughGuiney之外,没有其他东西可以让JS摆弄正在讨论的JS和html,这样我们就可以看到问题的实际效果。