我试图从CFLOOP中提取值并将其转储,但我似乎遗漏了一些东西。我需要从第一个循环中提取openHours,从第二个循环中提取openMinutes,并将它们放入变量中,然后运行查询以提交数据库中的值。
这是我在转储#form#时使用的结构。我需要获取变量form.openHours1,问题是openHours通过#CountVar#获取它的数字,所以基本上我需要转储#form.openHoursCountVar#之类的内容
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 发布于 2012-04-14 01:41:43
您想要的不是#form.openHours[CountVar]#,而是:
form["openHours" & CountVar]作为作用域,FORM也是一个结构,您可以使用数组表示法来获取值。
这是处理动态表单域名称的关键。
澄清一下:
form.openHours7等同于
form["openHours7"]第一种通常称为点表示法,第二种称为数组表示法(因为它类似于您引用数组元素的方式。
由于括号中的值是一个字符串,因此可以将其替换为变量。
<cfset fieldToUse = "openHours7">
<cfoutput>#form[fieldToUse]#</cfoutput>或者,正如我开始时所说的,是文字字符串和变量的组合。
你不能真的用点符号来做到这一点。(至少在不使用evaluate()的情况下是这样的,通常不推荐使用evaluate()。)
The documentation提供了大量关于如何使用结构的信息,包括不同的表示方法。
发布于 2012-04-14 00:11:50
我认为你想要这个,或者非常类似的东西:
<cfoutput>
<cfloop from="1" to="7" index="CountVar">
#openHours[CountVar]#<br>
</cfloop>
</cfoutput>发布于 2012-04-25 10:45:18
对不起,这对我来说有点模糊,但这并没有阻止我加入进来。你会有相同数量的开机时间和开机时间吗?你能直接在form.fieldnames上循环吗?现在,你已经有了名为opengours1-N的字段,听起来好像openminutes1-N还没有被添加。似乎你可以在字段名上循环,如果字段以openhours开头,你可以从结尾得到数字,然后你就可以很容易地创建相应的openminutes字段。正如Al前面所说的,您很可能会使用数组表示法从表单结构中获取值。
另一种想法是表单字段名称不必是唯一的。如果您有多次出现的"openhours",ColdFusion会为您将其转换为一个列表,然后您可以遍历该列表。
https://stackoverflow.com/questions/10144133
复制相似问题