2010-01-15 95 views
2

我想启用/禁用使用Javascript的按钮。由于调用了Javascript,在呈现Flash动画之后,该按钮在执行时存在。获取元素的div使用Javascript

按钮是层次结构:

<html><body><form#form1><div#control><asp:Button#Export1> 

我尝试了好几个小时才能到那个按钮的引用,但没有(的document.getElementById( “EXPORT1”)/的document.getElementById( “form1的”) .getElementById(“control”)。getElementById(“Export1”)/还有更多)似乎工作。

怎么到该按钮的引用(为了改变btnref.disabled =真)?

非常感谢您的帮助!

回答

2

您是否尝试过在文档中右击并选择“查看源文件”看到代码实际上是如何呈现? asp:Button是一个服务器控件,在渲染期间被转换为输入字段。在此期间,该字段的ID不会完全符合您在aspx中的设置。

您可以在服务器端使用Export1.ClientID得到控制的ID。

+0

这(和下一个答案)正在... 我也知道,但只是完全忘了-_- 非常感谢! – powerbar 2010-01-15 14:24:04

+0

很高兴听到它为你解决。对于记录来说,对于我们大多数人的帖子都是通过投票进行排序的,并且在相同数量的投票中,帖子以随机顺序显示,所以我们其他人无法知道当你说'下一个答案'=) – 2010-01-15 14:26:11

1

如果它在你的DIV唯一的按钮,这应该工作:

var btnref = document.getElementById("controls").getElementsByTagName("button")[0]; 
+0

的'ASP:Button'呈现一个'输入类型=“按钮”',而不是'button',这是一个大大不必要的假设做出关于DOM *和*找到元素的缓慢手段,当它确实有一个id。例如,对该网站的任何未来更改,甚至是简单的greasemonkey脚本都可能轻易破坏该方法。 – 2010-01-15 14:22:18

0

通常按钮的id不会停留在页面的源代码是相同的。点击HTML中的view source,然后查找该标签以查找新ID。然后,您可以使用该ID在类似:

document.getElementbyId("Export1_some_unique_id")... 
+1

如果最好不要硬编码的原因,它的变化。 'document.getElementById('<%= Export1.ClientID%>');'会是这样做的一种方式。对id进行硬编码会导致脚本因为用户可能认为完全与脚本无关的原因而中断,例如升级框架版本,在某些版本中,ID的生成方式稍有变化。 – 2010-01-15 14:24:41