日期:2014-05-18  浏览次数:20448 次

页面有母页版的情况下 调用后台的JS文件 结果提示“缺少对象” 很急 在线等~~~~
前台代码:
<table border="0" cellpadding="0" cellspacing ="0" style="width=700px;height:400px">
  <tr>
  <td onclick="Menu(1)"><asp:Label ID="m1" runat="server" Text="Label">房屋</asp:Label>
  </td>
  <td onclick="Menu(2)"><asp:Label ID="m2" runat="server" Text="Label">鲜花</asp:Label>
  </td>
  <td onclick="Menu(3)"><asp:Label ID="m3" runat="server" Text="Label">车辆</asp:Label>
  </td>
  <td onclick="Menu(4)"><asp:Label ID="m4" runat="server" Text="Label">其它</asp:Label>
  </td>
  </tr>
</table>

JS代码
function GetObj(objName){
 if(document.getElementById){
  return eval('document.getElementById("' + objName + '")');
 }else if(document.layers){
  return eval("document.layers['" + objName +"']");
 }else{
  return eval('document.all.' + objName);
 }
}
function change_Menu(index){
 for(var i=1;i<=num;i++)
 {  
  //var m='<%=("m"+i).ClientID%>';
//var n='<%=("m".ClientID%>';  
  if(GetObj("m"+i)){
  GetObj("m"+i).className = "menu"+i+"Off";
  }
 }
 if(GetObj("m"+index)){
  GetObj("m"+index).className = "menu"+index+"On";
 }
function Menu(c_index){
  change_Menu(c_index)
 }

个人设想用JS代码中被注释的m和n替换JS代码中的“m"+1和"m" 结果浏览器依旧提示"缺少对象"
不知道 该怎么解决 很急 在线等~~~~

------解决方案--------------------
解决方法,建议楼主使用DOM来操作,而不是通过ID来引用节点元素。

或者你非要用id就这样: aspx文件里添加如下js:
<script type="text/javascript>var m1='<%=m1.ClientID %>';</script>

改change_Menu(index)方法:
function change_Menu(index){ 
 var m = m1.substring(0,m1.length-1); //截取<span/>元素的id中除最后一个数字的部分
 for(var i=1;i <=num;i++) 
 {
if(GetObj(m+i)){ 
GetObj(m+i).className = "menu"+i+"Off"; 

 } 
 if(GetObj(m+index)){ 
GetObj(m+index).className = "menu"+index+"On"; 
 } 
}

上述代码没有测试,仅仅是个思路。楼主自己测试