我正在通过设置innerHTML来修改动态创建的输入元素,当我在DOM Inspector中查看元素时,我可以看到我传递的值在输入中。但是,我在页面上看不到它?是否有一个refresh()函数,我应该在设置值后调用它?
我尝试过innerText,并且得到了相同的结果。
以下是我如何设置它:
$("input[name='group']")[0].innerHTML = groups;
(就JS集和JQuery选择器而言,我发现chrome插件是这样变幻无常的)
答案 0 :(得分:4)
input
个元素不包含HTML。他们有value
s。
不,您不需要刷新任何内容,只要JavaScript完成运行(例如,事件处理程序完成),浏览器就会有更新显示的时刻,就会显示更改。如果你是在一个紧凑的循环中做这件事,你就不会在循环结束之前看到结果,但是我没有立即得到你正在做的感觉 - 除非你是单步通过开发工具中的代码?当你单步进行时,你不会看到刷新。
如果不是这样,那么当您调用代码时,该元素是否存在(尚未)?请记住,如果您的代码位于HTML 之前的<{1}}元素中您尝试更新的元素,那么您必须确保让它等待运行直到剩下的页面已被解析(例如,使用ready
回调)。或者,只需执行what the YUI folks recommend并将script
标记放在script
的末尾。
这是一个有效的例子:
body
故障:
jQuery(function($) {
setInterval(function() {
$("input[name='group']")[0].value = "Updated " + new Date();
}, 500);
});
的函数中;这是写jQuery(document).ready(...)
)的简写方法。更新:这是一系列更简单的示例,演示了整个“元素是否存在?”事情:
示例1:
jQuery
示例2:
<form>
<input type='text' name='group' value='original value' size='60'>
</form>
<script type='text/javascript'>
// This works, because it's _after_ the element
// it operates on
$("input[name='group']")[0].value = "Just one update: " + new Date();
</script>
示例3:
<script type='text/javascript'>
// This FAILS, because it's _before_ the element
// it operates on
$("input[name='group']")[0].value = "Just one update: " + new Date();
</script>
<form>
<input type='text' name='group' value='original value' size='60'>
</form>
答案 1 :(得分:1)
文本框没有内部HTML。您需要设置其值:
$("input[name='group']").val(groups);