2017-05-10 5 views
0

これは愚かで簡単な質問である場合は非常にごめんなさい。私は独学で知識が限られているので、javascriptは私がよく知っているものではありません。残念ながら、これはかなり速い修正が必要です。ドロップダウンリストを作成して、画像を生成する依存ドロップダウン

データベースにリンクされたドロップダウンメニューを作成しようとしています。ドロップダウン1には3つのオプションが表示されます(あらかじめ選択されているものはデータベースクエリに依存します)。オプション2または3が選択されている場合は、ドロップダウン1 - オプション2またはドロップダウン1 - オプション3に対応する選択肢の一覧が表示されます。

最後に、ドロップダウン2から選択すると、選択に対応します。

データベース照会で自動選択されたオプションがドロップダウンとイメージの両方に対応する場合は、これが自動的に表示されます(最初は再選択されません)。

私はこれまでに見つけたさまざまなstackoverflowの回答をまとめましたが、これまでにJSFiddleが90%働いています(私が理解できない唯一のことは、 "選択された"オプションがそうしなければならない場合、オプション)。

しかし、私のウェブサイトでは動作させることができません。私はそうのようなjQueryのファイルを呼び出す私のコードの開始時:

<script type="text/javascript" src="/js/jquery-3.2.1.js"></script> 

コード自体はここにある:それは結局のところ

<?php 

$USERINFO = $mysqli->query("SELECT * FROM members WHERE id = '$USERID'");   
$USERINFO = $USERINFO->fetch_object(); 

echo "<div style=\"width: 49%; display: inline-block;\"> 

<script language=\"JavaScript\" type=\"text/javascript\"> 

// linking values to dropdowns 
var ranksLists = { 
    'Rebel Alliance': '#rebel-ranks', 
     'Empire': '#empire-ranks', 
}; 

$('select[name=alliance]').change(function(){ 

    //hide all extra lists 
    $('.hide').hide(); 

    //get current value 
    var value = $(this).val(); 

    //if there is a list for this value, show it 
    if (value in ranksLists){  
    $(ranksLists[value]).show(); 
    } 

}); 

var rebeldata = { 
    'Recruit' : { img: '' }, 
    'Corporal' : { img: '/images/ranks/rebel/corporal.png' }, 
    'Sergeant' : { img: '/images/ranks/rebel/sergeant.png' }, 
    'Lieutenant' : { img: '/images/ranks/rebel/lieutenant.png' }, 
    'Captain' : { img: '/images/ranks/rebel/captain.png' }, 
    'Commander' : { img: '/images/ranks/rebel/commander.png' }, 
    'Wing Commander' : { img: '/images/ranks/rebel/wingcommander.png' }, 
    'Major' : { img: '/images/ranks/rebel/major.png' }, 
    'Commodore' : { img: '/images/ranks/rebel/commodore.png' }, 
    'Colonel' : { img: '/images/ranks/rebel/colonel.png' }, 
    'Admiral' : { img: '/images/ranks/rebel/admiral.png' }, 
    'Brigadier' : { img: '/images/ranks/rebel/brigadier.png' }, 
    'General' : { img: '/images/ranks/rebel/general.png' }, 
}; 

$('.rebel-rankbadge').change(function() { 
    var value = $(this).val(); 
    if (rebeldata[value] != undefined) 
    { 
     $('#rank-image').attr('src', rebeldata[value].img); 
    } 
}); 
</script> 

     <div>Alliance : </div> 
     <div> 
     <select name=\"alliance\" id=\"ranks\">"; 

     $alliance = array("Neutral" => "Neutral", 
         "Rebel Alliance" => "Rebel Alliance", 
         "Empire" => "Empire"); 

      foreach ($alliance as $a => $d) { 

        echo "<option value=\"$a\""; 

       if ($a == $USERINFO->alliance) echo " selected"; 

       echo "> " . $d . "</option>"; 
     } 

     echo " 

     </select> 

     <select name=\"rank\" id=\"rebel-ranks\" class=\"hide rebel-rankbadge\">"; 

     $rank = array("Civilian" => "Civilian", 
        "Recruit" => "Recruit", 
        "Corporal" => "Corporal", 
        "Sergeant" => "Sergeant", 
        "Lieutenant" => "Lieutenant", 
        "Captain" => "Captain", 
        "Commander" => "Commander", 
        "Wing Commander" => "Wing Commander (Navy)", 
        "Major" => "Major (Army)", 
        "Commodore" => "Commodore (Navy)", 
        "Colonel" => "Colonel (Army)", 
        "Admiral" => "Admiral (Navy)", 
        "Brigadier" => "Brigadier (Army)", 
        "General" => "General"); 

      foreach ($rank as $key => $value) { 

        echo "<option value=\"$key\""; 

       if ($key == $USERINFO->rank) echo " selected"; 

       echo "> " . $value . "</option>"; 

     } 

     echo " 

     </select> 

     <select name=\"rank\" id=\"empire-ranks\" class=\"hide empire-rankbadge\"> "; 

     $rank = array("Evil Civilian" => "Evil Civilian", 
        "Evil Recruit" => "Evil Recruit", 
        "Evil Corporal" => "Evil Corporal", 
        "Evil Sergeant" => "Evil Sergeant", 
        "Evil Lieutenant" => "Evil Lieutenant", 
        "Evil Captain" => "Evil Captain", 
        "Evil Commander" => "Evil Commander", 
        "Evil Wing Commander" => "Evil Wing Commander (Navy)", 
        "Evil Major" => "Evil Major (Army)", 
        "Evil Commodore" => "Evil Commodore (Navy)", 
        "Evil Colonel" => "Evil Colonel (Army)", 
        "Evil Admiral" => "Evil Admiral (Navy)", 
        "Evil Brigadier" => "Evil Brigadier (Army)", 
        "Evil General" => "Evil General"); 

      foreach ($rank as $key => $value) { 

        echo "<option value=\"$key\""; 

       if ($key == $USERINFO->rank) echo " selected"; 

       echo "> " . $value . "</option>"; 

     } 

     echo " 

     </select> 

     </div> 

     <div><img id=\"rank-image\" src=\" \" /></div> 

     </div>"; ?> 

答えて

0

これは本当にただばかな質問でした。私が行うために必要なすべては

$(ドキュメント).ready(関数(){

コード

})内のJavascript/jQueryのコードをラップでした。

これで、負荷を適切にロードする方法を理解する必要があります。

関連する問題