使用JavaScript修改标记值
我在网页上有这个标签使用JavaScript修改标记值,javascript,jquery,Javascript,Jquery,我在网页上有这个标签 <input type="hidden" name="ctl00_ed3327f9_e1db_40db_9d66_15946cead7ae_STATEFIELD" id="ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD" value="0" /> 但它返回null。我想这是因为对于.NET3.5及更早版本,它是一个隐藏字段 document.getElementById('<%= con
<input type="hidden" name="ctl00_ed3327f9_e1db_40db_9d66_15946cead7ae_STATEFIELD" id="ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD" value="0" />
但它返回
null
。我想这是因为对于.NET3.5及更早版本,它是一个隐藏字段
document.getElementById('<%= controlName.ClientID %>');
document.getElementById(“”);
对于.NET 4.0,将控件上的clientdmode
设置为Static
您已经添加了标记,因此我认为您正在使用它。这将是您的解决方案:
$("#ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD").val("1");
如果
getElementById
返回null
,可能是因为您在创建元素之前运行了脚本
将脚本移动到页面底部,就在关闭标记内:
<body>
<!-- page content -->
<script type="text/javascript">
document.getElementById("ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD").value = 1;
</script>
</body>
我刚刚测试了你的代码,它运行正常。隐藏不应该有什么区别。我猜问题可能是您试图在元素加载到页面之前运行getElementById?
getElementById
不需要
。。。。嗯,就是这样。。那么,如何克服它呢?帕特里克·杜德的建议就在这里。要么您需要将脚本移动到包含元素的页面部分下方,要么您需要将JS包装到onload中,以便在页面加载之前不会运行。noops。。。。使用此选项,当对象为null/错误为object reference为null@伞:无限循环?选择器是否找到了元素?如果有循环,那是另一个问题。不,我的代码中没有循环。;;&选择器没有找到任何东西;;我只想切换值。没有其他内容(没有其他代码)**1还有一件事我想告诉你//这是一个sharepoint 2010 Web部件页。@伞:很奇怪,它返回空值。这表明它应该起作用。
<body>
<!-- page content -->
<script type="text/javascript">
document.getElementById("ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD").value = 1;
</script>
</body>
<script type="text/javascript">
window.onload = function() {
document.getElementById("ctl00_0g_ed3327f9_e1db_40db_9d66_15946cead7ae__STATEFIELD").value = 1;
};
</script>