JS脚本应用中遇到的一点问题
最近需要实现一个简单的功能,即要让GridView模板列显示从下拉列表中获取的值,我选择在客户端编写脚本实现。但遇到了一些问题。经过努力问题最终得以解决,于是作下记录,以备用。
先贴出代码吧!
【前台代码】
<script language ="javascript" type = "text/javascript">
function sel()
{
var select = document.getElementById("ddlDmSize_12");
var select_text = select.options[select.selectedIndex].innerText;
var str = select_text;
var newstr = str.split("|");
// document.getElementById("GridView1_ctl12_txt_Lm").innerText = newstr[0];
// document.getElementById("GridView1_ctl12_txt_Dm").innerText = newstr[1];
// document.getElementById("GridView1_ctl12_txt_Gg").innerText = newstr[2];
// document.getElementById("GridView1_ctl12_txt_Dw").innerText = newstr[3];
document.getElementById("GridView1$ctl12$txt_Dm").innerText = newstr[0];
document.getElementById("GridView1$ctl12$txt_Lm").innerText = newstr[1];
document.getElementById("GridView1$ctl12$txt_Gg").innerText = newstr[2];
document.getElementById("GridView1$ctl12$txt_Dw").innerText = newstr[3];
}
</script>
【后台代码】
if (!IsPostBack)
{
ddlDmSize_12.Attributes.Add("onchange", "sel()");
}
如果用上面注释掉的语句在VS2005上是可以正常运行的,但是放到虚拟目录下执行却总要报错。
于是认真对比了两个源文件(被浏览器解析后),发现确实是有细微差别
这是VS2005上运行后的,从源文件中摘录的:
<input name="GridView1$ctl12$txt_Dm" type="text" id="GridView1_ctl12_txt_Dm" />
这是在建立了虚拟目录运行后的,从源文件中摘录的:
<input name="GridView1$ctl12$txt_Dm" type="text" id="GridView1_txt_Dm" />
注意到id的值发生了变化
原本以为获取name 和id 值都能够达到相同效果(实际在vs上并无影响)。
然而为了确保更加准确还是应该选择name属性的值。