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属性的值。

原文地址:https://www.cnblogs.com/lucky_hu/p/2030201.html