ColdFusion循环导致JavaScript

时间:2017-09-28 20:54:24

标签: javascript coldfusion

好吧,我发现了问题。这不是循环本身。这是清单。请注意,每个逗号后列表都有一个空格。为了便于阅读,我倾向于这样做。然而,显然CF很尊重这个空白作为列表项的真实部分,我不知道。删除列表中的空白可以解决问题。

我使用JavaScript填写一些表单元素。下面的代码有效,但相当重复。所以我试着把它变成一个循环。那种奇怪的方式失败了。工作代码:

<cfset textarr = getPageContext().getRequest().getParameterValues('rep2text')>

 <cfset valtitle = textarr[1]>
 <cfset valbef   = textarr[2]>
 <cfset valaft   = textarr[3]>
 <cfoutput>
     <script type = "text/Javascript">
        puttitle('#valtitle#',  'title')
        puttitle('#valbef#',    'summbef')
        puttitle('#valaft#',    'summaft') 
     </script>
 </cfoutput>

这是puttitle(本例简化):

function puttitle(text, id ) {
    document.getElementById(id).value = text;
}

由于我有三个以上的项目,我想通过这样做来压缩代码:

  <cfset txt = StructNew()>
  <cfset textarr = getPageContext().getRequest().getParameterValues('rep2text')>
  <cfset colidls   = "title, summbef, summaft"><!---these are the id's---> 
  <cfset i = 0>
  <cfloop list = "#colidls#" index = "item">
      <cfset i = i + 1>
      <cfset txt[item] = textarr[i]>

      <script type = "text/javascript">
         puttitle('#txt[item]#', '#item#')     
      </script>
  </cfloop>

考虑到textarr中提到的长表格值列表,这个代码要少得多。此外,如果添加了另一个项目,我只需将其放入colidls,代码就会自动执行此操作。

我对循环方法的问题在于它没有找到它所放入数据的所有id。它找到了一些并正确地将值放在应有的位置。但它没有找到其他人,当我检查时,它们被指示为空。

由于没有循环的第一个代码示例工作正常,因此必须正确形成具有其id的输入字段。我已检查所有数据是否正确传输到textarrcolidls完全正确,puttitle正在接收应有的数据。

所以我感到困惑。为什么我的一些身份出现了?代码中有些东西需要收紧吗?我错过了一些微妙的JavaScript吗?欢迎任何建议。

0 个答案:

没有答案