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

高手救命啊JS和后台代码结合使用出问题了~分不是问题啊
由于我的IMG是动态生成的,生成的时候想利用,也必须利用自动生成的代码传出去值。可是我的传值浏览器显示JS页面代码缺少值')'
我的JS代码如下
  function DoPass(ID)
  {
  var s=new Date();
  window.showModalDialog("DataPass.aspx?id="+ID,"","dialogWidth:550px;dialogHeight:290px;status:no;help:no;scrolling=no;scrollbars=no");
   
  location.href = location.href;
  }
后台部分代码
  foreach (DataRow i in dsRet.Tables[0].Rows)
  {
  if (!Convert.ToBoolean(i["FLAG"]))//部门还没有完成
  {
  sBM += i["name"].ToString() + @"<img onclick ='DoPass(" + i["ID"].ToString() + ")' src='Images/btnInfo.gif'/>";
  this.Session["MessageID"] = i["ID"].ToString();
  this.Session["FlagPostion"] = 1;
  }
  else 
  {
  sBM += i["name"].ToString() + @"<img src='/Images/btnPass.gif' />";
  }
  sBM += @" ";
  }

------解决方案--------------------
是onclick时报错还是一开始就报错了。
------解决方案--------------------

------解决方案--------------------
这个问题其实就是一些不规则数据引起的
比方说,<img onclick ="DoPass(333)" src= 'Images/btnInfo.gif'/>是正确的
但是一旦你的i["ID"].ToString()中出现空格,就会报错
如<img onclick ="DoPass(33 3)" src= 'Images/btnInfo.gif'/>
所以建议在i["ID"].ToString()外层加单引号,以免因脏数据而出错
"<img onclick =\"DoPass('"+i["ID"].ToString()+"')\" src= 'Images/btnInfo.gif'/>";


------解决方案--------------------
试试
onclick = 'DoPass(" + i["ID"].ToString() + ") ' 
=> 
onclick = 'DoPass(\"" + i["ID"].ToString() + "\") '

------解决方案--------------------
seedling_lq的想法和我差不多.最好把参数引起来.试一下.
------解决方案--------------------
i["ID"].ToString() 是不是写错了.
你是想取数组i中的ID 项?
<img onclick = 'DoPass('" + i[ID].ToString() + "') ' src= 'Images/btnInfo.gif '/ >"; 

------解决方案--------------------
i["ID"].ToString() 是不是写错了.
你是想取数组i中的ID 项?
<img onclick = 'DoPass('" + i[ID].ToString() + "') ' src= 'Images/btnInfo.gif '/ >"; 

------解决方案--------------------
mark好东西啊, 
window.showModalDialog
你可以只show出一个DIV,不用show整个页面的!