2015-05-28 27 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