关于标签选择器获取table中的<td>标签中的html值,以及<td>中<input type=‘text‘>中的value值的详解

本文详细介绍了如何使用标签选择器获取HTML表格中`<td>`标签的HTML内容,以及`<td>`内`<input type='text'>`的value值。在尝试通过给`<td>`设置ID获取值时遇到问题,发现由于ID重复导致错误。解决方案是利用`<td>`的索引来动态获取内容。同时,文章也讲解了如何获取`<input>`标签的value值,通过table的rows和cells属性可以定位到特定单元格内的输入框并读取其value。

关于标签选择器获取table中的<td>标签中的html值,以及<td>中<input type=‘text‘>中的value值的详解

1.标签选择器获取table中的<td>标签中的html值

这是我自己最近做的项目的一段jsp代码,

<table id="Mytable" class="table table-hover  table-bordered table-striped" style="margin-bottom: 0px;">
	  <tr>
	  	<th>序号</th>
	  	<th>设备名称</th>
	  	<th>设备编号</th>
	  	<th>设备类型编号</th>
	  	<th>设备状态</th>
	  	<th>设备是否被租用</th>
	  	<th>设备数量</th>
	  	<th>设备单价</th>
	  	<th>设备备注</th>
	  	<th>操作</th>
	  </tr>
	  <c:forEach var="equipment" items="${equipmentList }" varStatus="status" >
	  	<tr>
	  		<td>${status.index+1 }</td>
	  		<td>${equipment.name }</td>
	  		<td>${equipment.no }</td>
	  		<td>${equipment.typeId }</td>
	  		<c:if test="${equipment.state==1 }">
	  			<td>正常</td>
	  		</c:if>
	  		<c:if test="${equipment.state==2 }">
	  			<td>维修</td>
	  		</c:if>
	  		<c:if test="${equipment.state==3 }">
	  			<td>报废</td>
	  		</c:if>
	  		<c:if test="${equipment.equipmentIsBeHiredOrNot==1 }">
	  			<td>被租用了</td>
	  		</c:if>
	  		<c:if test="${equipment.equipmentIsBeHiredOrNot==0 }">
	  			<td>没有被租用</td>
	  		</c:if>
	  		<td>${equipment.number }</td>
	  		<td>${equipment.price }</td>
	  		<td>${equipment.remark }</td>
	  		<td>
	  			<!-- 获取当前的用户id -->
	  			<c:if test="${equipment.equipmentIsBeHiredOrNot==0 || equipment.number!=0 }">
	  				<input type="text" style="width: 300px"  >数量
	  			
	  			 																		
	  				<button type="button" class="btn btn-info btn-xs" onclick="javascript:send(${equipment.id },${equipment.price },1,${currentUser.id },${status.index })">租用</button>
	  			</c:if>
	  			<c:if test="${equipment.state==3 }">
	  				<button type="button" class="btn btn-info btn-xs" 
	  				onclick="javascript:sendDel(${equipment.id })">删除设备</button>
	  			</c:if>
	  			
	  		</td>
	  	</tr>
	  </c:forEach>
	</table>

这个table中有一个租借<button type="button" class="btn btn-info btn-xs" onclick="javascript:send(${equipment.id },${equipment.price },1,${currentUser.id },${status.index })">租用</button>按钮,目的是通过点击租借按钮把table中的字段的值通过ajax传入后端。但是今天遇到了一个问题,当我想在js中通过选择器获取标签里面的值的时候,就是这个标签<td>${equipment.name }</td>,我下意识地给td标签加了个id属性<td id = 'xxx' >${equipment.name }</td>,然后在js的函数中我是这样写的var equipmentName = document.getElementById('xxx').innerHTML;大家应该知道我错到哪里了,哈哈。
之后就去浏览器中测试这个按钮,然后在控制台输出字段值,console.log(equipmentBeHiredId,equipmentBeHiredCost,equipmentBeHiredState,equipmentBeHiredAdminId,status,name,inputValue);然而我发现控制台输出的永远是第一行<tr>标签录入的设备名称,所以这应该就是《td》的id属性重复导致的,很明显我们回过头去看的话,在equipmentList .length长度的循环下,每一个<td>${equipment.name }</td>都被赋予了xxx的id属性值,之后我就和室友一直在探讨如何动态更新id值在每一次 <c:forEach循环的时候,结果查csdn查其他资料都没有结果,到最后选择了标签选择器

var list = document.getElementsByTagName("tr")[status+1];
		var name = list.getElementsByTagName("td")[1].innerHTML; 

先根据定位符status获取到当前的《tr》标签,然后再在list.getElementsByTagName(“td”)数组中选择第一个标签即为<td>${equipment.name }</td>,然后点出innerHtml即可

function send(equipmentBeHiredId,equipmentBeHiredCost,equipmentBeHiredState,equipmentBeHiredAdminId,status){
		
		/* var quantity = document.getElementById("quantity"+status).value;
		var equipmentBeHiredName = document.getElementById("equipmentname"+status).innerHTML;
		*/
		
		
		var list = document.getElementsByTagName("tr")[status+1];
		var name = list.getElementsByTagName("td")[1].innerHTML; 
		
		
		// var inputValue = list.getElementsByTagName("td")[9].getElementsByTagName("input").value;
		var tb = document.getElementById("Mytable");
		var inputValue = tb.rows[status+1].cells[9].getElementsByTagName("input")[0].value;
		
		
		console.log(equipmentBeHiredId,equipmentBeHiredCost,equipmentBeHiredState,equipmentBeHiredAdminId,status,name,inputValue);
		if(confirm("确定要租用这个设备吗?")){
			$.post("${pageContext.request.contextPath}/equipment/hire.do",{equipmentBeHiredId:equipmentBeHiredId},
				function(result){
					var result=eval('('+result+')');
						if(result.errorInfo){
							alert(result.errorInfo);
						}else{
							alert("租用成功");
							window.location.href="${pageContext.request.contextPath}/equipmentBeHired/userListBeHired.do?currentUserid=${currentUser.id}";
					}
				}
			);
		}
	}

2.标签选择器获取table中的<td>中<input type=‘text‘>中的value值

然后最大的问题就是获取<td>中的input中的value值

		<c:if test="${equipment.equipmentIsBeHiredOrNot==0 || equipment.number!=0 }">
			<input type="text" style="width: 300px"  >数量
		
		 																		
			<button type="button" class="btn btn-info btn-xs" onclick="javascript:send(${equipment.id },${equipment.price },1,${currentUser.id },${status.index })">租用</button>
		</c:if>
		<c:if test="${equipment.state==3 }">
			<button type="button" class="btn btn-info btn-xs" 
			onclick="javascript:sendDel(${equipment.id })">删除设备</button>
		</c:if>
		
	</td>

通过查阅资料,我学到了cells和rows属性,,首先需要给table设置一个id值,方便我们选到他,然后

var tb = document.getElementById("Mytable");

然后tb.rows[]为这个表格下面的行数组,tb.rows[i]即为第i+1行,i从0开始。
然后tb.rows[i].cells[]为当前第i+1行这一行所包含的标签们所组成的数组。
因为我的标签在第9位所以是tb.rows[status+1].cells[9].即最终代码为

var inputValue = tb.rows[status+1].cells[9].getElementsByTagName("input")[0].value;

inputValue即为input输入框所输入的值
在这里插入图片描述

养个号太难了,┭┮﹏┭┮,13个粉丝,2000个访问量,你懂得。

<table cellspacing="4" style="padding: 0; table-layout: fixed;" class="inputs searchinput"> <colgroup> <col width="60px" /> <col width="210px" /> <col width="60px" /> <col width="230px" /> <col width="40px" /> <col width="200px" /> <col width="200px" /> <col /> </colgroup> <tbody> <tr> <%--<td>领域: </td> <td> <input type="text" maxlength="20" name="KnowledgeCatalog2" class="txt im" /> </td>--%> <td>时间范围: </td> <td> <input type="text" style="width: 100px" maxlength="15" name="StartTime" class="txt im Wdate" readonly="readonly" /> <%-- - <input type="text" style="width: 100px" maxlength="15" name="SearchContent2" class="txt im Wdate" readonly="readonly" />--%> </td> <%--<td>部门: </td> <td> <input id="txtDepartment" name="DeptID" value="0" type="text" class="txt im" /> </td>--%> <%-- <td> <label style="vertical-align: middle;"> <input type="checkbox" name="isinclude" checked="checked" value="1" style="vertical-align: sub;" /> 包含子部门 </label> </td>--%> <td> <input type="button" value=" 搜索 " name="search" class="bbtn bg-blue" /> </td> <td> <input type="reset" value=" 重置 " name="reset" class="bbtn2 bg-hui" /> </td> <td> <input type="hidden" name="PageIndex" value="1" /> <input type="hidden" name="PageSize" value="30" /> </td> </tr> <%--<tr>--%> <%--<td>任务名称: </td> <td> <input type="text" maxlength="20" name="SearchContent" class="txt im" /> </td>--%> <%--<td>结束时间: </td> <td> <input type="text" style="width: 100px" maxlength="15" name="EndTime" class="txt im Wdate" readonly="readonly" />--%> <%-- - <input type="text" style="width: 100px" maxlength="15" name="SearchContent3" class="txt im Wdate" readonly="readonly" />--%> <%--</td>--%> <%--<td>状态: </td> <td> <select name="Status" class="sel"> <option value="0">全部</option> <option value="1">未开始</option> <option value="2">进行中</option> <option value="3">已完成</option> </select> </td>--%> <%--</tr>--%> </tbody> </table> </form> <table class="tlist" cellspacing="1" cellpadding="1"> <colgroup> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="100" /> <col width="80" /> <col width="80" /> </colgroup> <thead> <tr> <th colspan="2"></th> <th colspan="3">月度</th> <th colspan="3">年度</th> <th colspan="3">总计</th> <th colspan="2">同比</th> </tr> <tr> <th class="e">序号</th> <th>行销大类(三级目录)</th> <th>开发个数</th> <th>奖励金额</th> <th>优秀知识数量</th> <th>开发个数</th> <th>奖励金额</th> <th>优秀知识数量</th> <th>开发个数</th> <th>奖励金额</th> <th>优秀知识数量</th> <th>开发个数</th> <th>奖励金额</th> </tr> </thead> 每一列加上分割线 怎么写
08-23
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%-- Created by IntelliJ IDEA. User: Administrator Date: 2025/2/28 Time: 15:47 To change this template use File | Settings | File Templates. --%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生列表</title> </head> <body> <h2 style="text-align: center">欢迎您,${name}</h2> <form action="<%=request.getContextPath()%>/student/selectStudentAndGrade" method="post"> 学生姓名:<input type="text" name="studentName" placeholder="请输入要搜索的学生姓名" value="${student.studentName}"> 班级:<select name="gradeId"> <option value=>请输入班级</option> <option value="1"<c:if test="${student.gradeId=='1'}">selected</c:if>>java1班</option> <option value="2"<c:if test="${student.gradeId=='2'}">selected</c:if>>java2班</option> <option value="3"<c:if test="${student.gradeId=='3'}">selected</c:if>>java3班</option> <option value="4"<c:if test="${student.gradeId=='4'}">selected</c:if>>java4班</option> </select> <input type="submit" value="查询"> <input type="button" value="重置" onclick="resetQuery()"> </form> </form> <input type="button" value="新增" onclick="location.href='<%=request.getContextPath()%>/studentAdd.jsp'"> <table> <tr> <td>序号</td> <td>学生姓名</td> <td>年龄</td> <td>出生日期</td> <td>班级</td> </tr> <c:forEach items="${studentList}" var="tea" varStatus="sta"> <tr> <td>${sta.count}</td> <td>${tea.studentName}</td> <td>${tea.age}</td> <%-- <td>${stu.birth}</td>--%> <td><fmt:formatDate value="${tea.birth}" pattern="yyyy-MM-dd"/></td> <td>${tea.grade.gradeName}</td> <%-- <td>${stu.grade.gradeName}</td>--%> <td><a href="<%=request.getContextPath()%>/student/getStudentInfo/${tea.id}">修改</a> <a href="<%=request.getContextPath()%>/student/deleteStudent/${tea.id}" onclick="if (confirm('确认是否删除')==false) {return false;}">删除</a></td> </tr> </c:forEach> </table> </body> <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.9.1.js"></script> <script> function resetQuery(){ $("input[type=text]").val(""); $('select').prop('selectedIndex',0); } </script> </html>加css样式
06-13
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福建沙县小吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值