2017-08-04 81 views
1

我的代碼應該隱藏幾個div的負載,但由於某種原因,當我輸入應該調出div的代碼時,什麼也沒有發生。請告訴我爲什麼我的代碼中的jQuery不適用於我的if語句。爲什麼jQuery和if語句不能一起工作?

這裏是java腳本/ jQuery和HTML(以防萬一)

var code = $("#code"); 
 

 
function onstart(){ 
 
    $("#superfoods").hide(); 
 
    $("#fakemedia").hide(); 
 
    $("#dropbear").hide(); 
 
} 
 

 
function checkcode(){ 
 
    if (code == "superfoods") 
 
    { 
 
    $("#superfoods").show(); 
 
    } 
 
    else if (code == "fakemedia") 
 
    { 
 
    $("#fakemedia").show(); 
 
    } 
 
    else if (code == "dropbear") 
 
    { 
 
    $("#dropbear").show(); 
 
    } 
 
    else { 
 
    document.alert(code + "is not a valid imput.") 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body onload="onstart()"> 
 
    <input id="code"><button onclick="checkcode()">search for level</button> 
 
    <div id="superfoods"> 
 
     <a href="superfoods.html"><img src="super-food-400x400.jpg"></a> 
 
    </div> 
 
    <div id="fakemedia"> 
 
     <a href="fakemedia.html"><img src="fakemedia.png"></a> 
 
    </div> 
 
    <div id="dropbear"> 
 
     <a href="dropbear.html"><img src="drop-bearfgh.jpg"></a> 
 
    </div> 
 
</body>

+1

'變種代碼= $(「#code」)。val();' – Beginner

+0

閱讀此https://stackoverflow.com/questions/37579919/jquery-if-else-statement-not-working-but-works-if-separated-into-個人 - 如果 –

+0

你也是ld在校驗碼函數內設置代碼的值,否則該變量的值不會更新。 –

回答

4

注: - 在你的代碼試圖比較字符串值對象(code)因此你的代碼不起作用。

所以

var code = $("#code");// this is an object 

必須: -

var code = $("#code").val();// this is a string now 

但因爲你是使用jQuery,這個怎麼樣的解決方案: -

$(document).ready(function(){ 
 
    
 
    $("div").hide();// hide all divs 
 
    
 
    var ids=[];//create an id's array 
 
    
 
    $('div').each(function(){ 
 
    ids.push($(this).attr('id')); // get all div id's and push them to array 
 
    }); 
 
    
 
    ids = ids.filter(Boolean); // remove empty+undefined values from array 
 
    
 
    $('button').on('click',function(){//on click of button 
 
    
 
    var code = $('#code').val();// get text-box value 
 
    
 
    if ($.inArray(code, ids)>-1){ // if text-box value exist in array 
 
    
 
     $("#"+code).show(); // show corresponding div 
 
     
 
    }else { 
 
    
 
     alert(code + "is not a valid imput."); // else alert 
 
     
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
    <input id="code"><button>search for level</button><br/><br/> 
 
    <div id="superfoods"> 
 
     <a href="superfoods.html"><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTrfTcZ0t3zjzHrGzCiaoI9X94WB-fjDesGNNgjPI4W9bZZFHVf"></a> 
 
    </div> 
 
    <div id="fakemedia"> 
 
     <a href="fakemedia.html"><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR-nmxPn405_hKrvlT8tOghIpl8yQcMMJnuSYuExWgBW4N6TmUn"></a> 
 
    </div> 
 
    <div id="dropbear"> 
 
     <a href="dropbear.html"><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGqGpDhUX8weC_xIjO_COdt4F03dA58e5feBQw48VuZ6diJQXj"></a> 
 
    </div> 
 
</body>

注: - 此代碼有優勢,它會工作的優良越來越多的div的。 (只需確保ID必須是唯一的每個div的)

0
  1. var code = $("#code"); 這個語句返回一個元素不是字符串

使用var code = $("#code").val();返回一個字符串

  • <input id="code">總是支持運行else聲明
  • 集它的值

  • document.alert JavaScript有沒有這個功能 只使用alert
  • 您還可以使用switch語句像

    function checkcode(){ 
        switch (code) 
        { 
         case "superfoods": 
          $("#superfoods").show(); 
          break; 
         case "fakemedia": 
          $("#fakemedia").show(); 
          break; 
         case "dropbear": 
          $("#dropbear").show(); 
          break; 
         default: 
          alert(code + "is not a valid imput."); 
        } 
    } 
    
    相關問題