日期:2014-05-16  浏览次数:20569 次

无法 将一个隐藏域 的对象传入 脚本函数............要晕了 - Web 开发 / Ajax
这个是我在 JSP 里写的 代码
Java code

  out.print("<input type='hidden' value='发件人' id='MsgfromID' name='Msgfrom' />");
  out.print("<input type='hidden' value='收件人' id='MsgtoID' name='Msgto' />");
  out.print("<table border='0' width='100%'");
  out.print("<tr>");
  out.print("<td align='left'>信件内容</td>");
  out.print("</tr>");
  out.print("<div id='msgControlDIV'><tr>");  
  out.print("<td bgcolor='CCCCFF' align='left'><a href='javascript:sendAJAX_SendMessageForRe(1,2,MsgfromID,MsgtoID,msgControlDIV),void(0)'>回复</a></td>");//当我点击回复的时候 居然说找不到 MsgfromID这个 
  out.print("<td><input type='button' value='text' onclick='alert(MsgfromID.value)' /></td>");//但是 点这里的测试按钮 是可以得到 这个隐藏域的值的.....................为什么呢????
  out.print("</tr></div>");
  out.print("</table>");






求 前辈解答 ,着急.............

------解决方案--------------------
理论上IE是可以. 标准做法是 document.getElementById('MsgfromID')..
另: 查询一下,生成HTML页面里 ID 为 MsgfromID 的 element 是否有多个? 也就是ID不唯一.
------解决方案--------------------
应该同楼上说的,你的html里存在多个id一样的控件

你上面的java代码应该是放在了显示数据的循环里面

生成了多个id一样的<input type='hidden' value='发件人' id='MsgfromID' name='Msgfrom' />
------解决方案--------------------
out.print("<td bgcolor='CCCCFF' align='left'><a href='javascript:sendAJAX_SendMessageForRe(" + mif.getMsgfromid() + "," + mif.getMsgtoid() + ",msgControlDIV),void(0)'>回复</a></td>");


===你的代码上下不一样的?????????上面的代码是不是少了MsgfromID,MsgtoID?

out.print("<td bgcolor='CCCCFF' align='left'><a href='javascript:sendAJAX_SendMessageForRe(1,2,MsgfromID,MsgtoID,msgControlDIV),void(0)'>回复</a></td>");

------解决方案--------------------
先不管原因``
解决方案:
点回复先调另一个JS函数(getValue())来过渡,在这个JS函数中,用document.getElementById()这个方法取得隐藏域中的值,再将取得的值传入你的AJAX函数中
------解决方案--------------------
out.print("<td bgcolor='CCCCFF' align='left'><a href='javascript:sendAJAX_SendMessageForRe('" + mif.getMsgfromid() + "','" + mif.getMsgtoid() + "'[color=#FF0000][/color],msgControlDIV),void(0)'>回复</a></td>");
如果那个方法要的是字符串的话
------解决方案--------------------
也就是要加上引号才可以,如果你的那个send......方法接收的是字符串的话

------解决方案--------------------
你这样吧:
将out.print(" <td bgcolor='CCCCFF' align='left'> <a href='javascript:sendAJAX_SendMessageForRe('" + mif.getMsgfromid() + "','" + mif.getMsgtoid() + "',msgControlDIV),void(0)'>回复 </a> </td>"); 
改成:
out.print(" <td bgcolor='CCCCFF' align='left'> <a href='javascript:send1('" + mif.getMsgfromid() + "','" + mif.getMsgtoid() + "'),void(0)'>回复 </a> </td>"); 

你在上面写一个Javascript方法:
<script>
function send1(mag1,msg2){
sendAJAX_SendMessageForRe(mag1,msg2,document.getElementById("msgControlDIV"));

}
</script>
------解决方案--------------------