码农奇迹
专注、专业、无畏的前行

对于服务器端控件
使用document.getElementById('Id')
在客户端读取时有些困难
因为.netframework会把服务器控件解释到客户端时改变控件的ID名字
比如"tbText"会变成"ctl00$aspNetForm$tbText"类似这种名字。

如果要在客户端alert一个textbox的值,或者做一些其他操作,怎么抓到这个控件的名字呢。。。。


也许有人会按照.net的命名规范,按照字符串拼接,拼出他解析后的html控件名字。

也许还有人通过后台代码,在textbox加个autopostback属性,然后后台事件代码写一段response.write的JavaScript。
前者可以完成客户端操作
但是这样做,万一哪天.netframework平台版本升级改变了命名规范怎么办啊?
那所有客户端的javascript:document.getElementById('Id') 岂不是要重写?

后者可以避免上述问题,但是为了alert一个值,去和服务器交互一下,让用户看到你的页面其实是刷新了一下,这样其实也浪费服务器资源。
(也许有人想到了ajax,但是ajax其实后台还是和服务器交互的)


其实有一个很简单的办法

大家可以这样解决这个问题

var p=document.getElementById(' <%=tbText.ClientID %>')

<%=tbText.ClientID %> 就可以把服务器控件在客户端呈现出来的ID抓出来了。

哈哈,简单吧

这样在客户端的js,抓服务器控件就很简单了,
后台还是专注于和数据库打交道,
那些些个性化的操作,就完全可以在客户端进行

摘自:http://tiantainanhai.blog.163.com/blog/static/370859112009426104716280/

posted on 2011-05-19 09:40  @编程浪子@  阅读(5011)  评论(0编辑  收藏  举报