本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

转播到腾讯微博
返回列表 回复 发帖
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<html>
<title>test</title>
<body>
<script language="JavaScript">

function addValue(tb)
{
var tbody = document.getElementById(tb).getElementsByTagName("TBODY")[0];
var tr = document.createElement("TR");

var td1 = document.createElement("TD");
td1.width="15";
td1.innerHTML = "<input type='checkbox' name='selection' value="+idx+">";
tr.appendChild(td1);
var td2 = document.createElement("TD");
td2.innerHTML = "<input type='text' name='paramName["+idx+"]' value='' class='form_field' size='10' maxlength='20'>";
tr.appendChild(td2);
tbody.appendChild(tr);
idx = idx+1;

}
function deleteValue(tb){
var tbody = document.getElementById(tb).getElementsByTagName("TBODY")[0];
var object = document.all;
var count = 1;
var j=0;
var array = new Array();
for(i=0;i<object.length;i++)
{
if(object.item(i).type=="checkbox")
{
if(object.item(i).checked)
{
array[j] = count;
j++;
}
else
{
count++;
}
}
}
for(i=0;i<array.length;i++)
{
tbody.deleteRow(array);
}
}

</script>
<form action="javascriptTest.html" method="post" name="form1">
<table>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" id="tb1">
<tr>
<td>UseName:</td>
<td><input type="text" name="namevalue" align="middle"></td>
<td>DES:</td>
<td><input type="text" name="desvalue" align="middle"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td><input type=button name="add" value="add" align="middle" onclick="addValue('tb1');"></td>
<td><input type=button name="delete" value="delete" align="middle" onclick="deleteValue('tb1');"></td>
<tr>
<script type="text/javascript" language="Javascript1.1">
var idx = <c:out value="${count}"/>
</script>
</table>
</form>
</body>
</html>
新手上路,各位小心了,多多照顾啦!
这段代码是整个jsp中的一部分,主要功能是点击add按钮,增加一个checkbox 和一个text文本框,然后选中checkbox则被选择的记录被删除,整个jsp在IE里一点问题都没有,但是到了firefox跑不起来了,按delete按钮没有反应,而且后台得不到add的数据,郁闷的很,本人对这个也不在行
希望各位高手救命了,我奋斗了3,4天了,还是没有进展
我在线等各位高手答复!
新手上路,各位小心了,多多照顾啦!
貌似有几处的单双引号互相嵌套得比较乱?
不是的,是这段代码:
var tbody = document.getElementById(tb).getElementsByTagName("TBODY")[0];
var tr = document.createElement("TR");

var td1 = document.createElement("TD");
td1.width="15";
td1.innerHTML = "<input type='checkbox' name='selection' value="+idx+">";
tr.appendChild(td1);
var td2 = document.createElement("TD");
td2.innerHTML = "<input type='text' name='paramName["+idx+"]' value='' class='form_field' size='10' maxlength='20'>";
tr.appendChild(td2);
tbody.appendChild(tr);
好像有问题
因为最后还有一个提交按钮,要得到这里checkbox, text框的值,但是
好像根本不能把值传到后台,请问有什么办法可以在后台得到checkbox, text框的值?
我对javascript实在不是很了解啊,各位大哥谁会就帮我一把吧
新手上路,各位小心了,多多照顾啦!
说的就是这一段中的引号嵌套。
那就不明白了,应该引号没有什么问题的,其中+idx+是变量
新手上路,各位小心了,多多照顾啦!
Is ".innerHTML" supported in firefox? maybe not, but I'm not sure.
you can use "alert" to debug this, or try other ways
deleteValue()中的document.all是IE ONLY的代码,你可以把:
代码
var object = document.all;

改成试试:
代码
var object = document.getElementsByTagName("INPUT");

另外,我觉得你把deleteValue()搞得那么复杂干吗,就象下面的不好吗:
代码
function deleteValue(tb){
  var tbody = document.getElementById(tb).getElementsByTagName("TBODY")[0];
  var ips;
  for(var i=tbody.rows.length-1;i>=0;i--)
  {
      ips = tbody.rows[i].getElementsByTagName("INPUT");
      for(var j=0;j<ips.length;j++)
      {
        if(ips[j].type=="checkbox" && ips[j].checked) tbody.deleteRow(i);
      }
  }
}
谢谢大家的帮助,谢谢sunwan,现在delete的功能实现了,但是用innerHTML还是不能把数据传到后台,有什么可以来代替它的呢?而且要在IE,firefox中都能跑起来的
新手上路,各位小心了,多多照顾啦!
引用 (bernerhuang @ 2006年11月6日 9:58 AM) <{POST_SNAPBACK}>
谢谢大家的帮助,谢谢sunwan,现在delete的功能实现了,但是用innerHTML还是不能把数据传到后台,有什么可以来代替它的呢?而且要在IE,firefox中都能跑起来的

FX也是支持innerHTML的,不能把数据传到后台,可能是你的后台程序或者idx的初值没处理好。
不好意思,我想在问一下:能不能在innerHTML 里写tag的,比如说:
td1.innerHTML = "<html:text property='billFormula.item[${loop}].paramName' styleClass='form_field' size='10' maxlength='20'/>"

因为我们整个jsp页面都是用struts的标签做的,在html里的text框的数据就能传到后台,在javascript里的就不行
新手上路,各位小心了,多多照顾啦!
var tbody = document.getElementById(tb).getElementsByTagName("TBODY")[0];
var tr = document.createElement("TR");

var td1 = document.createElement("TD");
td1.style.width = "15px";

var formElement = document.createElement("input");
formElement.setAttribute("type","checkbox");
formElement.setAttribute("name","selection");
formElement.setAttribute("value",idx);
td1.appendChild(formElement);
tr.appendChild(td1);


var td2 = document.createElement("TD");

formElement = document.createElement("input");
formElement.setAttribute("type","text");
formElement.setAttribute("name","paramName[" + idx + "]");
formElement.setAttribute("value","");
formElement.setAttribute("size","10px");
formElement.setAttribute("maxlength","20px");
formElement.className = "form_Field";
td2.appendChild(formElement);


tr.appendChild(td2);
tbody.appendChild(tr);

试试吧,不知道对错,没测试
谢谢各位大哥的帮助,虽然最后还是不成功,但是我发现了很多东西,呵呵,也学到了很多东西啊,以后要是有问题,在请教各位了,呵呵!
新手上路,各位小心了,多多照顾啦!
引用
好像有问题
因为最后还有一个提交按钮,要得到这里checkbox, text框的值,但是
好像根本不能把值传到后台,请问有什么办法可以在后台得到checkbox, text框的值?
看这里
http://community.csdn.net/Expert/topic/501...l?temp=.1521112

我实验过,应该可以的。注意红字部分。

引用
BlueDestiny(最近较少上网,有事请Email联系) ( ) 信誉:100 Blog 2006-9-14 23:19:00 得分: 0

mozilla中的innerHTML是以getAttribute来得到值的。看看下面的示例你就明白了。

<body id="www.never-online.net">
请输入值,观察innerHTML中input的value值
<button onclick="alert(document.getElementById('demo').innerHTML)">look up innerHTML</button>
<div id="demo">
input1: <input value="http://blog.never-online.net" onkeyup="this.setAttribute('value',this.value)" />
input2: <input value=""/>
</div>
</body>