为什么会这样:
如果你的控件中出现runat="server"那么,这个控件就是服务器端控件,而JS获取的是客户端
的控件,所以你会获取不到。
这类问题,都有一个通用的解决方法。
先运行下页面,然后看页面源代码,找到你要获取的那个元素,看看那个元素在客户端的ID是什么,最后在JS中获取这个元素。这样就可以了。
如:
所以,我们用document.getElementById("$div$textbox1")这个ID参数不是简单的"TextBox1"
而是“$div$textbox1”
为什么会这样,因为C#在将服务器端代码传给客户端之前,会为每个控件生成一个ID,这个ID会包含这个控件的父控件信息,如$div$textbox1中的$div就是这个textbox的父控件,表名这个textbox在一个id="div"的控件里面
还有个知识点需要了解下
ClientID,UniqueID,这两个ID最后在客户端生成的ID是不一样的。
ClientID生成的是客户端的ID属性
而UniqueID生成的是客户端控件的name属性
Server端的ID是TextBox1,客服端的ID则不同,具体ID可以查看网页源代码获得,或则指定ClientID,在.net 3.5以后可以指定clientidMOde 为static,意思是client的ID和Server的ID相同。
var txt = <%=TextBox1.ClientID %>;
var cont= txt.Text;
怎么可能呢,我自己在VS中建了个asp.net页面
然后
var txt=doucument.getElementByID(TextBox1.clientID);
var str = txt.value;//这样试试,不行的话就var = txt.Text;
var txt=doucument.getElementByID(TextBox1.clientID);
也可以 var txt= $("#TextBox1").val();