c中foreach的用法

c中foreach的用法,第1张

下面我就跟你们详细介绍下c中foreach的用法的用法,希望对你们有用。

c中foreach的用法的用法如下:

c:forEach>用法  博客分类: ?J2EE

CC++C#JSPSQL

<c:forEach>

<c:forEach>为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容。

语法

语法1:迭代一集合对象之所有成员

<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]

[begin="begin"] [end="end"] [step="step"]>

本体内容

<

/c:forEach>

语法2:迭代指定的次数

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>

本体内容

</c:forEach>

标签具有以下一些属性

var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。

items:要进行迭代的集合。对于它所支持的类型将在下面进行讲解。

varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。

begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数。

end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数。

step:迭代的步长。

标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该 *** 作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:

java.util.Collection:调用iterator()来获得的元素。

java.util.Map:通过java.util.Map.Entry所获得的实例。

java.util.Iterator:迭代器元素。

java.util.Enumeration:枚举元素。

Object实例数组:数组元素。

基本类型值数组:经过包装的数组元素。

用逗号定界的String:分割后的子字符串。

javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。

不论是对整数还是对集合进行迭代,的varStatus 属性所起的作用相同。和var属性一样,varStatus用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。该类包含了一系列的特性,它们描述了迭代的当前状态,如下这些属性的含义如下所示:

current:当前这次迭代的(集合中的)项。

index:当前这次迭代从0开始的迭代索引。

count:当前这次迭代从1开始的迭代计数。

first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。

last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。

begin:begin属性的值。

end:end属性的值

step:step属性的值

下面就来看一个个基本的例子,表格隔行背景色变化

xml 代码

<c:forEach var="item" items="${contents}" varStatus="status">

<tr <c:if test="${status.count%2==0}">bgcolor="#CCCCFE"</c:if>align="left">

xxx

</tr>

</c:forEach>

限制

·假若有begin属性时,begin必须大于等于 0

·假若有end属性时,必须大于begin

·假若有step属性时,step必须大于等于0

Null 和 错误处理

·假若items为null时,则表示为一空的集合对象

·假若begin大于或等于items时,则迭代不运算

FOREACH标签部分.

首先确认MAP中有没有取得数据.

<c:forEach [var="varName"] items="" [varStatus="varStatusName"]

FOREACH标签含义: items存放被迭代的集合对象, var用来存放现在指到的成员。

3. var元素输出的参数需要与MAP中存放的参数对应,(通常用一个JAVABEAN对像封装放在LIST等集合对像中).案例中的,NAME等值是否在JAVABEAN中存在.如果存在,EL表达式写法为: ${entry.name}即可直接输入,其他值也是一样.

IF标签部分.

EL表达式有自己的判断方式,无法直接用==,!=,>=,<=直接判断.

如果要判断封装对像是否为空.请用empty关键字....

以下是IF标签与FOREACH综合用法的示例:

<!-- 如果集合中不为空,输出数据! --><c:if test="${!empty adminlist}"> <c:forEach items="${adminlist}" var="list"> <tr> <td>${list.id}</td> <td>${list.name}</td> <td>${list.pwd}</td> </tr> </c:forEach></c:if><!-- 如果集合中为空,直接在HTML中输出提示! --><c:if test="${empty adminlist}"> 未能找到数据! </c:if>

为了能更好的显示出FOREACH的效果.通常先用choose标签进行判断,以下是JSP页面中的完整标签片段示例:(IF标签不再举例.)

<table cellpadding="5" cellspacing="1" border="0" width="100%" align="center"> <tr align="center"> <td>ID</td> <td>用户帐号</td> <td>用户密码</td> <td colspan="2">管理</td> </tr><c:choose> <c:when test="${!empty userlist}"> <c:forEach items="${userlist}" var="list"> <tr> <td>${list.id}</td> <td>${list.name}</td> <td>${list.pwd}</td> <td> <a href="UserEdit.jspx?action=update&id=${list.id}">编缉</a> </td> <td> <div onClick="return del()"> <a href="UserEdit.jspx?action=delete&id=${list.id}">删除</a> </div> </td> </tr> </c:forEach> </c:when> <c:otherwise> <tr> <td colspan="5">未能找到符合条件的数据!</td> </tr> </c:otherwise> </c:choose></table>

你最终的目的应该是想在input按钮上加入点击事件吧,点击后将input的值写入cookie吧,这样

的话,给tr加事件是没有意义的,下面的代码在不引用任何构架的前提下实现的,没有使用jquery

也没有使用ExtJS,相对比较麻烦些,希望你能看懂,如果用jquery的话,更简单了,这里就不写了

function writeCookie(name, value) {

// 写入cookie的代码你自己去实现

}

var rows = new Array() // 这个表格行的数组你自己组织吧,我这里只是定义一个简单的js数组,你可以从后台取这个值

// 先生成HTML代码,输出到网页上,这样才用JS绑定事件

var strHTML = ''

for(var i=0 i<rows.length i++) {

strHTML='<tr>' +

'<td><input id='btn_" + i + "' type="hidden" value='" + rows[i].id + "' /></td>' +

'<td>无关紧要的内容</td>' +

'</tr>'

}

document.writeln(strHTML)

// 绑定事件

for (var i=0 i<rows.length i++) {

var btnName = 'btn_' + i

var e = document.getElementById(btnName)    // 循环取出每个按钮对象

var value = e.value             // 取出按钮的值

e.onclick = function() {

writeCookie(btnName, value)     // 以btnName作为键名,将按钮的值写入cookie

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11629089.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存