日期:2014-05-17  浏览次数:20726 次

for循环显示的图片,无论点击哪个图片调用函数的总是第一个,求解答
rs.last();
  int length = rs.getRow();
  rs.beforeFirst();
  rs.next();
  out.print("<table border='2'>");
  for(int i=1;i<=length;i++)
  {
  out.print("<tr>");
  for(int j=1;j<=10;j++)//每行的属性数目是10
  {  
  out.print("<td>");
  if(j==1)
  {
  if("start".equals(rs.getString(j).trim()))
  {
  out.print("<img src='image/startexecute.png' alt='关闭' id='end' onclick='changeImg1()'/>");
  }
 
  else
  {
  out.print("<img src='image/stopexecute.png' alt='开启' id='start' onclick='changeImg3()'/>");
  }
  }
  else
  {
  out.print(rs.getString(j));
  out.print("</td>");
  }
  }
  rs.next();
  out.print("</tr>");
  }
  out.print("</table>");
这是在查询数据库结束后显示查询结果的代码,每行的第一个元素用图标表示点击图标时调用js,运行结果倒是没什么问题,就是我在点击图片的时候,无论我在点击哪行的图标,变化的总是第一行的,求解决办法,估计是代码逻辑问题。
js:
function changeImg1(){
  var img1 = document.getElementById("end");
  img1.src="image/stopexecute.png";img1.alt="关闭";
  window.location.href="update.jsp";
  alert("设备关闭成功");
  }
function changeImg3(){
  var img3 = document.getElementById("start");
  img3.src="image/startexecute.png"; img3.alt="开启";
  window.location.href="update.jsp";
  alert("设备开启成功");
}
 

------解决方案--------------------
你把id改为 end+i的形式的时候你要在你的方法里价格参数
onclick='changeImg3()'改为onclick='changeImg3(' + i + ')'
function changeImg3(i){
var img3 = document.getElementById("start" + i);
img3 .src="image/startexecute.png";
img3 .alt="开启";
//看情况你是否要修改其他的一些东西 比如onclick事件的方法等
window.location.href="update.jsp";
alert("设备开启成功");
}
这样应该也可以的