一般页面的执行过程:
1.浏览器发送get请求,请求页面。
2.iis接到请求,看看能否自己能处理,它能处理的只有html或者jpg之类的东东,aspx不能处理,转给isapi.dll处理。如果是请求html,那就返回html。
3. isapi.dll调用.net的代码,过程复杂,涉及到ihttphadle,ihttpmodel等,这里省略,反正最终结果就是拼出个html出来。然后把html返回给浏览器。
第2和第3的最终结果都是返回html。
4. 浏览器根据html的定义来解析,比如说dtd, 把<script>里面的代码解析成js对象。
5. 解析过后,页面运行时再通过js做相应操作
所以,你所谓的在“前台直接<%=%>获取就OK了。”,是处于第3步里拼html阶段,所以能被第4步解析成js对象。而你通过getElementById,已经是在第5步了,自然字符串还是字符串,不可能变为js对象。
坛子里同样的情况还出现有在 第3步拼html阶段使用第4步的js定义的变量,还询问为什么不成功的。
在asp.net执行的时候,js还没被解析呢,怎么能使用?
// 参考:http://topic.csdn.net/u/20100909/13/f697f80c-7f9f-47f3-a77d-aad30d2ae072.html?39652