2013-07-25 49 views
0

好吧所以我有一個select語句需要在javascript中填充一個循環。我對JS有非常非常基本的瞭解。我正在使用一些非常基本的Coldfusion。問題是一個是客戶端和另一個服務器端。選擇語句以循環另一個javascript

我需要第一個選擇語句來循環我的cfloop在JavaScript裏面的位置。我需要以某種方式改變到一個javascript循環(在那裏說:$(文件)。就緒(函數(){)。我不知道怎麼辦。誰能幫助?

<cfoutput> 

    <script type='text/javascript' src='/jquery-1.8.2.js'></script> 
    <script type="text/javascript"> 
    function changeHiddenInput (objDropDown) 
    { 
     var objHidden = document.getElementById("hiddenInput"); 
     objHidden.value = objDropDown.value; 
    } 

    </script> 
    </head> 
    <body> 

    <cfquery name="Types" datasource="DSN"> 
    SELECT Taking.*, Type.* 
    FROM Taking 
    INNER JOIN Type ON Taking.Taking_TypeID = Type.Type_ID 
    ORDER BY Type_ID 
    </cfquery> 

    <form>How many to change? 
     <select id="dropdown" name="dropdown" onchange="changeHiddenInput(this)"> 
     <cfloop index="ABC" from="1" to="12" step="1"> 
      <option value="#ABC#">#ABC#</option> 
     </cfloop> 
     </select> 

     <input type="text" name="hiddenInput" id="hiddenInput" value="" /> 
    </form> 

    <br> 
    <br> 
    <cfset Changing=4> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    <cfloop index="I" from="1" to="#Changing#" step="1"> 
    $('.box#I#').hide(); 
    $('##dropdown#I#').change(function() { 
     $('.box#I#').hide(); 
     $('##div' + $(this).val()).show(); 
    }); 
    </cfloop> 
    }); 
    </script> 

    <form> 
    <cfloop index="J" from="1" to="#Changing#" step="1"> 
    <select id="dropdown#J#" name="dropdown#J#"> 
    <option value="0">Choose</option> 
     <cfloop query="Types" startrow="1" endrow="#Types.recordcount#"> 
      <option value="area#J##Type_ID#">Change over #Type_Name#</option> 
    </cfloop> 
    </select> 
    <br> 

    <cfloop query="Types" startrow="1" endrow="#Types.recordcount#"> 
    <div id="divarea#J##Type_ID#" class="box#J#"> 

     <cfquery name="GetQuestions" datasource="DSN"> 
     SELECT Questions.* 
     FROM Questions 
     WHERE Questions_OrgID=1 
     AND  Questions_TypeID=#Types.Type_ID# 
     ORDER BY Questions_Rank 
     </cfquery> 

     <cfloop query="GetQuestions"> 
      #Questions_Question#<br> 
     </cfloop> 

    </div> 
    </cfloop> 
    <br> 
    <br> 
    </cfloop> 

    </form> 
    </cfoutput> 
+0

也許你可以詳細說明爲什麼需要將ColdFusion和JS代碼混合在一起? PS。在我認爲「客戶端」代碼中有SQL查詢似乎很可怕......(從我的Java/C#經驗中講,我不知道CF.) – user1766760

+0

@ user1766760 - 在.cfm文件中,內容在''標籤將純粹是服務器端(實際上任何標籤都是從 duncan

+1

此外,您可能會從錯誤的角度來處理這個問題。你可以備份並告訴我們你想用純英語(而不是代碼)做什麼? – Leigh

回答

0

我不完全。確定你想要做什麼但是你可以把這樣的事情:

$(document).ready(function(){ 
    <cfloop index="I" from="1" to="#Changing#" step="1"> 
    $('.box#I#').hide(); 
    $('##dropdown#I#').change(function() { 
     $('.box#I#').hide(); 
     $('##div' + $(this).val()).show(); 
    }); 
    </cfloop> 
    }); 

成類似:

$(document).ready(function(){ 
    for (var i = 1; i <= #Changing#; i++) 
    { 
     $('.box' + i).hide(); 
     $('##dropdown' + i).change(function() { 
      $('.box' + i).hide(); 
      $('##div' + $(this).val()).show(); 
     }); 
    } 
}); 

更新:事實上,它聽起來像是完全的JS解決方案?

function changeHiddenInput (objDropDown) { 
    for (var i = 1; i <= objDropDown.value; i++) 
     { 
      $('.box' + i).hide(); 
      $('##dropdown' + i).change(function() { 
       $('.box' + i).hide(); 
       $('##div' + $(this).val()).show(); 
      }); 
    } 
} 
+0

鄧肯這是正確的軌道。 我將如何獲得該值#在第一個選擇菜單中填入循環中的##(在這裏你選擇1-12?在我的例子中有額外的代碼,因爲我不知道我在做什麼 – Adam

+0

啊好吧。這就變成純粹的JS答案了,從'changeHiddenInput'完成你目前在document.ready()中的工作,你可能還想從Coldfusion中設置一個全局JS變量作爲默認的最大值:'var Changing = #someValue#;' – duncan

相關問題