首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CFLOOP获取值

从CFLOOP获取值
EN

Stack Overflow用户
提问于 2012-04-13 23:50:22
回答 3查看 1.1K关注 0票数 0

我试图从CFLOOP中提取值并将其转储,但我似乎遗漏了一些东西。我需要从第一个循环中提取openHours,从第二个循环中提取openMinutes,并将它们放入变量中,然后运行查询以提交数据库中的值。

这是我在转储#form#时使用的结构。我需要获取变量form.openHours1,问题是openHours通过#CountVar#获取它的数字,所以基本上我需要转储#form.openHoursCountVar#之类的内容

代码语言:javascript
复制
struct  
FIELDNAMES   POSTITNOW,OPENHOURS1,OPENHOURS2,OPENHOURS3,OPENHOURS4,OPENHOURS5,OPENHOURS6,OPENHOURS7
OPENHOURS1   13
OPENHOURS2   13
OPENHOURS3   12
OPENHOURS4   0
OPENHOURS5   0
OPENHOURS6   0
OPENHOURS7   0
POSTITNOW    YES 
EN

回答 3

Stack Overflow用户

发布于 2012-04-14 01:41:43

您想要的不是#form.openHours[CountVar]#,而是:

代码语言:javascript
复制
form["openHours" & CountVar]

作为作用域,FORM也是一个结构,您可以使用数组表示法来获取值。

这是处理动态表单域名称的关键。

澄清一下:

代码语言:javascript
复制
form.openHours7

等同于

代码语言:javascript
复制
form["openHours7"]

第一种通常称为点表示法,第二种称为数组表示法(因为它类似于您引用数组元素的方式。

由于括号中的值是一个字符串,因此可以将其替换为变量。

代码语言:javascript
复制
<cfset fieldToUse = "openHours7">
<cfoutput>#form[fieldToUse]#</cfoutput>

或者,正如我开始时所说的,是文字字符串和变量的组合。

你不能真的用点符号来做到这一点。(至少在不使用evaluate()的情况下是这样的,通常不推荐使用evaluate()。)

The documentation提供了大量关于如何使用结构的信息,包括不同的表示方法。

票数 1
EN

Stack Overflow用户

发布于 2012-04-14 00:11:50

我认为你想要这个,或者非常类似的东西:

代码语言:javascript
复制
<cfoutput>
<cfloop from="1" to="7" index="CountVar">        
     #openHours[CountVar]#<br>
</cfloop>
</cfoutput>
票数 0
EN

Stack Overflow用户

发布于 2012-04-25 10:45:18

对不起,这对我来说有点模糊,但这并没有阻止我加入进来。你会有相同数量的开机时间和开机时间吗?你能直接在form.fieldnames上循环吗?现在,你已经有了名为opengours1-N的字段,听起来好像openminutes1-N还没有被添加。似乎你可以在字段名上循环,如果字段以openhours开头,你可以从结尾得到数字,然后你就可以很容易地创建相应的openminutes字段。正如Al前面所说的,您很可能会使用数组表示法从表单结构中获取值。

另一种想法是表单字段名称不必是唯一的。如果您有多次出现的"openhours",ColdFusion会为您将其转换为一个列表,然后您可以遍历该列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10144133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档