获取动态tr中的值

北在北山北 2014-05-16 09:03:31
这是JSP页面中的代码:


这是我写的js代码:


这是生成的页面:


表格中的数据都是从数据库中读取出来的,我想实现这样的功能:
我在第一行的“盘点数量”文本框中输入数据,失去焦点后调用js方法实现自动计算(商品数量减去盘点数量)损益数量。

现在的问题是:
我在第一行输入数据,能够成功执行。
但是在第二行输入数据,执行的还是第一行的数据内容(包括读取到的商品数量和盘点数量),第二行对应的损益数量不会显示。

求解决方法!!
...全文
784 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
北在北山北 2014-05-20
  • 打赏
  • 举报
回复
引用 1 楼 net_lover 的回复:
id只能一个页面有一个相同的值,你放到forEach循环里面,页面出现了多个,只有第一个有用,因此 下面的都是无效的 你应该 把每个id都加上序号,如 <c:forEach items="${signBusList}" var="sign" varStatus="xh"> 如<tr id="no${xh.index}"> </cforEach>
如果这样的话,它这个id怎么调用? 还这样吗:var index = document.getElementById("no${index}").innerHTML; 如果这样的话,${index}是读不出来的。 运行结果还是只能读取第一行的数据。
zyzy15 2014-05-19
  • 打赏
  • 举报
回复
下面这种方式可以不用id,但是对浏览器有一定要求 ie下可以,ff就不行了

  <TABLE id="tab" border="1">
  <TR>
	<TH>名称</TH>
	<TH>数量</TH>
	<TH>盘点</TH>
	<TH>损益</TH>
  </TR>
  </TABLE>

	var tab = document.getElementById("tab");\
	//模拟从数据库中取数据画表格
	var arr = [["商品1",2000], ["商品2",500]];
	for (var i=0; i<arr.length; i++)
	{
		var newrow = tab.insertRow();
		var newcell = newrow.insertCell();
		newcell.innerHTML = arr[i][0];	//名称
		newcell = newrow.insertCell();
		newcell.innerHTML = arr[i][1];	//数量
		newcell = newrow.insertCell();
		newcell.innerHTML = "<input type='text' onchange='fun(this)'>";	 //盘点
		newcell = newrow.insertCell();
		newcell.innerHTML = "<input type='text'>";	//损益
	}
	//计算
	function fun(obj) {
		//损益是盘点input(obj)的父元素(parentNode)的下个兄弟元素(nextSibling)的第一个子元素(childNodes[0])
		var sy = obj.parentNode.nextSibling.childNodes[0];
		sy.value = parseInt( obj.parentNode.previousSibling.innerHTML ) - obj.value;
	}
hike_2013 2014-05-19
  • 打赏
  • 举报
回复
页面中有同样的id 只能取第一个id的值 , 这里要么在tr用class + 编号 或者通过 tr 的下标
king4323210 2014-05-19
  • 打赏
  • 举报
回复
字符类型的用+操作,其实是连接+号左右两边。缺少类型转换
KeepSayingNo 2014-05-17
  • 打赏
  • 举报
回复
你在构建表格的时候,应该给每一行的单元格的id都加上行号,这样的话保证id唯一,然后在计算损益的时候,通过id获取元素的时候就唯一了。
lzj0327 2014-05-16
  • 打赏
  • 举报
回复
可以在calculate()中传入${check.stock_number}和this作参数,通过this.value得到盘点数量,至于损益数量的input可以给它设定相同的class得到,这样即使表格改动也没影响
孟子E章 2014-05-16
  • 打赏
  • 举报
回复
id只能一个页面有一个相同的值,你放到forEach循环里面,页面出现了多个,只有第一个有用,因此 下面的都是无效的 你应该 把每个id都加上序号,如 <c:forEach items="${signBusList}" var="sign" varStatus="xh"> 如<tr id="no${xh.index}"> </cforEach>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧