设置动态的id或是其他的属性

本文介绍了一个使用JSP和JavaScript实现动态改变表格中单元格背景颜色的例子。具体做法是利用JSP迭代输出表格数据,并在JavaScript中通过循环匹配元素ID来改变其样式。此方法适用于需要动态显示数据及状态的应用场景。

     

  <%int i = 0; %> 

        <s:iterator value="#session.sel" var="sel">
    <input type="text" id="+<%=i++ %>+" value="<s:property value="#sel.value"/>">

       </s:iterator>

     session.sel这是session种放的list;


下面的这个例子是我做的项目(根据取到的每个值,再将字体背景色改变):

 <div class="adv-table">
                                    <table  class="display table table-bordered table-striped" id="example">
                                      <thead>
                                      <tr>
                                          <th class="hidden-phone" style="width: 123px;">设备编号</th>
                                          <th class="hidden-phone">设备型号</th>
                                          <th>序列号</th>
                                          <th>业务用途</th>
                                          <th class="hidden-phone">业务Ip</th>
                                          <th class="hidden-phone">管理Ip</th>
                                          <th class="hidden-phone">服务级别</th>
                                          <th class="hidden-phone">出保日期</th>
                                          <th>系统管理员</th>
                                          <th class="hidden-phone">监控状态</th>
                                          <th class="hidden-phone">可用性</th>
                                      </tr>
                                      </thead>
                                      <tbody>
                                      <%int i = 0; %>
                             <c:forEach items="${hostList}" var="hostList">
                             <tr class="gradeX">
                                 <td  id="navigation" style="width: 157px;"><a href="/itm/host/${hostList.name }" target="_blank">${hostList.host }</a></td>
                                 <td>${hostList.inventory.software_app_e==null?'&nbsp;':hostList.inventory.software_app_e }</td>
                                 <td>${hostList.inventory.serialno_a==null?'&nbsp;':hostList.inventory.serialno_b }</td>
                                 <td>${hostList.inventory.url_a==null?'&nbsp;':hostList.inventory.url_a }</td>
                                 <td>${hostList.inventory.poc_2_screen==null?'&nbsp;':hostList.inventory.poc_2_screen }</td>
                                 <td  id="navigation">${hostList.inventory.site_notes }</td>
                                 <td>${hostList.inventory.site_rack }</td>
                                          <td class="center hidden-phone">${hostList.inventory.site_country }</td>
                                          <td class="center hidden-phone">${hostList.inventory.poc_2_phone_a }</td>                                  
                                 <td style="text-align: center;">
                                 <c:choose>
  <c:when test="${hostList.status =='1'}">
  <span class="badge bg-important">&nbsp;</span>
  </c:when>   
  <c:otherwise>
  <span class="badge bg-success">&nbsp;</span>
  </c:otherwise>  
 </c:choose>
                                 </td>
                                 <td style="text-align: center; width:102px;">
                                 
                                 <div id="<%=i%>available" class="font-fourdiv">                                   
                                     <i class="icon-zabbix_unknown font-fouri"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span><span class="path5"></span><span class="path6"></span></i>     
                                 </div>
                                 <div id="<%=i%>snmp_available" class="font-fourdiv">                              
                                     <i class="icon-snmp_unknown4 font-fouri"><span class="path1"></span><span class="path2"></span><span class="path3"></span><span class="path4"></span><span class="path5"></span><span class="path6"></span></span><span class="path7"></span></i>
                                  </div>
                                  <div id="<%=i%>jmx_available" class="font-fourdiv">                           
                                     <i class="icon-jmx_unknown font-fouri"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i>
                                  </div>
                                  <div id="<%=i%>ipmi_available" class="font-fourdiv">
                                     <i class="icon-ipmi_unknown font-fouri"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i>
                                 </div>
                                 
                                 </td>
                                 <%i++; %>
                             </tr>
                             </c:forEach>                                      
                                      </tbody>
                                     
                          </table>
                          </div>
                      </section>
                  </div>

如下是js部分:

<% int j = 0;%>//这里也设置变量,与jsp的i相对应
 <c:forEach items="${hostList}" var="hostList" varStatus="hostext">
<script type="text/javascript">
$(function(){
              var available = '${hostList.available}';//foreach循环出来的值
              var index = '<%=j%>';
              alert("index:"+index);
              var div_available= $("#"+index+"available");
              if(available==0){
              div_available.addClass("font-gray");
              }  else if(available==1){
              div_available.addClass("font-green");
              }  else{
              div_available.addClass("font-red");
              }
             
                    var snmp_available =  '${hostList.snmp_available}';
              var div_snmp_available = $("#"+index+"snmp_available");
              if(snmp_available==0){
              div_snmp_available.addClass("font-gray");
              }  else if(snmp_available==1){
              div_snmp_available.addClass("font-green");
              }  else{
              div_snmp_available.addClass("font-red");
              }
             
              var jmx_available =  '${hostList.jmx_available}';
              var div_jmx_available = $("#"+index+"jmx_available");
              if(jmx_available==0){
              div_jmx_available.addClass("font-gray");
              }  else if(jmx_available==1){
              div_jmx_available.addClass("font-green");
              }  else{
              div_jmx_available.addClass("font-red");
              }
             
              var ipmi_available =  '${hostList.ipmi_available}';
              var div_ipmi_available = $("#"+index+"ipmi_available");
              if(ipmi_available==0){
              div_ipmi_available.addClass("font-gray");
              }  else if(ipmi_available==1){
              div_ipmi_available.addClass("font-green");
              }  else{
              div_ipmi_available.addClass("font-red");
              }
             
});
</script>
<% j=j+1;%>
</c:forEach>

这样的操作有很多种 , 也很灵活。

一、取整行或是某一列,如果他们有唯一性的值,那把jsp元素的id定义为这个唯一性的值,js也是可以通过循环取到这个值,同他也找jsp的元素。

二、也可以弄个函数,传个参数,通过这个参数来取jsp对象。

<think>我们正在处理一个关于JavaScript设置对象或DOM元素属性的问题。用户的问题很明确:想知道如何设置对象或DOM元素的属性。 根据引用内容,我们可以总结出以下几点关键信息: 1. 引用[1]提到了操作DOM元素,包括修改元素的内容、属性和样式,以及动态创建元素。 2. 引用[2]展示了如何通过JavaScript修改按钮的innerText属性,从而改变HTML标签的属性。 3. 引用[3]说明了document对象是DOM提供的,用于访问和操作网页内容,并提到了获取DOM元素的方法。 因此,我们可以将回答分为两个主要部分:设置JavaScript对象属性设置DOM元素属性。 ### 设置JavaScript对象属性 在JavaScript中,对象是属性的集合。我们可以通过以下几种方式设置对象属性: 1. 点符号(.):`object.property = value;` 2. 方括号符号([]):`object['property'] = value;`(当属性名包含空格或特殊字符,或是动态属性名时很有用) 3. 使用`Object.defineProperty()`方法:可以定义或修改属性的详细配置(如可枚举性、可配置性、可写性等)。 ### 设置DOM元素属性 DOM元素也是对象,但有一些特殊的属性和方法。设置DOM元素属性的常见方法包括: 1. 直接设置属性:对于标准属性(如id、className、href等),可以直接通过点符号或方括号符号设置。 2. 使用`setAttribute()`方法:可以设置标准属性或自定义属性。 3. 设置属性对象:通过访问元素的`attributes`属性,但通常不直接操作,而是使用上述方法。 另外,对于某些特殊属性(如样式、类名等),有特定的方式: - 样式:可以通过`element.style`对象设置单个样式,或者使用`element.style.cssText`设置整个样式字符串,或者通过修改`className`或`classList`来改变类。 - 类名:`element.className`(字符串)或`element.classList`(提供add, remove, toggle等方法)。 - 内容:`innerHTML`(可以解析HTML字符串)、`textContent`(只设置文本内容,不解析HTML)和`innerText`(考虑样式,不显示隐藏元素文本)。 ### 注意事项 - 使用`innerHTML`插入用户输入的内容时,需要注意防范XSS攻击。 - 自定义属性(以`data-`开头的属性)应使用`setAttribute()`或直接通过`dataset`对象设置。 现在,我们根据以上分析来组织回答。</think>### JavaScript 设置对象或 DOM 元素属性的方法 #### 一、设置 JavaScript 对象属性 1. **点符号法** 直接通过`.`操作符设置属性值: ```javascript let person = {}; person.name = 'Alice'; // 设置属性 person.age = 30; ``` 2. **方括号法** 适用于动态属性名或含特殊字符的属性: ```javascript let key = 'email'; person[key] = 'alice@example.com'; // 动态属性名 person['home-address'] = '123 Main St'; // 含连字符的属性 ``` 3. **`Object.defineProperty()`** 精确控制属性特性(可枚举/可写等): ```javascript Object.defineProperty(person, 'id', { value: '001', writable: false // 设置为只读 }); ``` --- #### 二、设置 DOM 元素属性 1. **直接属性赋值** 适用于标准属性(如 `id`, `className`, `href`): ```javascript const button = document.querySelector('button'); button.id = 'submit-btn'; // 设置ID button.className = 'active'; // 设置类名 button.href = 'https://example.com'; // 链接元素专用 ``` 2. **`setAttribute()` 方法** 通用方法,支持标准/自定义属性: ```javascript button.setAttribute('data-role', 'primary'); // 设置自定义属性 button.setAttribute('disabled', 'true'); // 禁用按钮 ``` 3. **特殊属性处理** - **样式修改**: ```javascript button.style.color = 'blue'; // 单个样式 button.style.cssText = 'color: blue; font-size: 16px;'; // 批量样式 ``` - **类名操作**: ```javascript button.classList.add('active'); // 添加类 button.classList.remove('inactive'); // 移除类 ``` - **内容操作**: ```javascript button.textContent = '提交'; // 纯文本(防XSS) button.innerHTML = '<i>提交</i>'; // 解析HTML(谨慎使用) ``` --- #### 三、对比总结 | **方法** | 适用场景 | 示例 | |-------------------------|----------------------------------|-------------------------------| | **点符号/方括号** | JavaScript对象、DOM标准属性 | `obj.name = 'Alice'` | | **`setAttribute()`** | DOM自定义/特殊属性 | `el.setAttribute('data-id', 1)` | | **`style`/`classList`** | 样式和类名精细控制 | `el.style.backgroundColor = 'red'` | | **`textContent`** | 安全文本插入(推荐) | `el.textContent = 'Hello'` | > ⚠️ 安全提示:避免直接使用 `innerHTML` 插入用户输入的内容,可能导致 XSS 攻击。优先使用 `textContent` 或消毒处理。 --- ### 相关问题 1. 如何安全地使用 `innerHTML` 避免 XSS 攻击? 2. `data-*` 自定义属性有哪些应用场景? 3. `Object.defineProperty()` 能实现哪些高级特性? 4. 如何批量修改多个 DOM 元素的样式?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值