2015-05-28 29 views
0

因此,下面的代碼適用於此特定示例,並且我希望使其在前一頁上的用戶確定的表單select +輸入類型的數量爲動態的情況下工作。因此,現在我們已經在$ champion [] =(「Aatrox」,「somethingelse」,「somethingelse2」)的php數組中;所以現在我們循環選擇和輸入字段的數量。每個冠軍都有不同的法術,所以現在當你爲輸入中的第一個冠軍AAtrox選擇Q時,你會在某個輸入用戶可能想要選擇E並在輸入表格中看到該冠軍的法術名稱帶有相應添加的onchange腳本的動態PHP數組

<?php 
    $champion = "Aatrox" 
?> 
    <select id="spell" name="spell" onchange="val()"> 
     <option value="Passive">Passive</option> 
     <option value="Q" selected>Q</option> 
     <option value="W">W</option> 
     <option value="E">E</option> 
     <option value="R">R</option> 
    </select> 
<input type="text" id="spellname" disabled> 
<script>  
    var champions = { 
     "Aatrox":["Passive", "spell1", "spell2", "spell3", "spell4"], 
     "Ahri":["Passive", "spell1", "spell2", "spell3", "spell4"] 
    }; 
    function change(x){ 
     if(x==="Passive"){x=0;} 
     if(x==="Q"){x=1;} 
     if(x==="W"){x=2;} 
     if(x==="E"){x=3;} 
     if(x==="R"){x=4;} 
     return x; 
    } 
    function val(d) { 
     if(typeof d === "undefined"){ 
     d = document.getElementById("spell").value;} 
     var spellname = document.getElementById("spellname"); 
     spellname.value=champions["<?php echo $champion; ?>"][change(d)]; 
    } 
    val("Q"); 
</script> 

我真的不能找出動態如何檢查從PHP動態數組在這個JavaScript腳本

+1

也許你應該閱讀[客戶端和服務器端編程有什麼區別?](http://stackoverflow.com/questions/13840429/what-is-the-difference-between-client-side-首先是服務器端編程)。 – cmbuckley

+0

由於表單是在前一頁發送的,因此必須有一種方法來實現這一點 – Higeath

+0

因此,也許你可以做'$ champion = $ _POST ['champion'];'或者表單字段的名稱在前一頁?我無法確定,因爲從您的問題中不清楚您要做什麼。 – cmbuckley

回答

0

不知道如果我完全理解你想在這裏完成的,但在這裏它是一展身手。

<?php 
    $champions = array("Aatrox","Ahri"); 
    foreach($champions as $champion){ 
?> 
    <select id="spell-<?php echo $champion ?>" 
      name="spell" onchange="val('<?php echo $champion ?>')"> 
     <option value="Passive">Passive</option> 
     <option value="Q" selected>Q</option> 
     <option value="W">W</option> 
     <option value="E">E</option> 
     <option value="R">R</option> 
    </select> 
<input type="text" id="spellname-<?php echo $champion ?>" disabled> 
<?php } //end foreach ?> 

<script>  
    var champions = { 
     "Aatrox":["Passive", "spell1", "spell2", "spell3", "spell4"], 
     "Ahri":["Passive", "spell1", "spell2", "spell3", "spell4"] 
    }; 
    function change(x){ 
     if(x==="Passive"){x=0;} 
     if(x==="Q"){x=1;} 
     if(x==="W"){x=2;} 
     if(x==="E"){x=3;} 
     if(x==="R"){x=4;} 
     return x; 
    } 
    function val(championName) { 

     d = document.getElementById("spell-" + championName).value; 
     var spellname = document.getElementById("spellname-" + championName); 
     spellname.value=champions[championName][change(d)]; 
    } 
    <?php foreach($champions as $champion) { 
     echo "val(" . $champion . ");"; 
    } ?> 
</script> 

請記住,將服務器端代碼與客戶端代碼混合通常是不好的做法。雖然在這一點上,它需要重新組織你如何處理所有事情(例如使用AJAX來加載JSON)。我高度鼓勵你研究這個話題。

+0

最後一件事情是如何簡單地循環每個冠軍,就像你做val(「aatrox」); VAL( 「AHRI」);一樣的方法?只是一個循環 – Higeath

+0

是的,基本上。但是,如前所述,混合JavaScript和PHP可能會使維護變得困難。所以記住這一點。 –

+0

我其實想問問這個循環實際上看起來像 – Higeath