2016-08-03 88 views
1

我用各種if語句創建了一個函數,如果參數爲true,將會執行該函數。但是將false作爲參數傳遞似乎不起作用。我究竟做錯了什麼?Javascript布爾參數傳遞不正確

function easySlider(titleP, subTitleP, overlayP) { 
 
    var title = titleP; 
 
    var subTitle = subTitleP; 
 
    var overlay = overlayP; 
 

 
    if (title === true) { 
 
    $(".sliderTitle").css("display", "block"); 
 
    } else { 
 
    $(".sliderTitle").css("display", "none"); 
 
    } 
 

 
    if (subTitle === true) { 
 
    $(".sliderSubTitle").css("display", "block"); 
 
    } else { 
 
    $(".sliderSubTitle").css("display", "none"); 
 
    } 
 

 
    if (overlay === true) { 
 
    $(".sliderOverlay").css("display", "block"); 
 
    } else { 
 
    $(".sliderOverlay").css("display", "none"); 
 
    } 
 
} 
 

 
easySlider(true, false, true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<h2 class="sliderTitle">Hello sliderTitle</h2> 
 
<h3 class="sliderSubTitle">Hello sliderSubtTitle</h3> 
 
<div class="sliderOverlay">Hello sliderOverlay</div>

+2

除了沒有緩存DOM訪問和不需要的作業,沒有什麼不對的代碼,我可以看到。也好奇你爲什麼不使用'.hide'和'.show' ... –

+0

你在if語句中用double等於(==)嗎? – therealbischero

+2

_But傳遞false作爲參數似乎並不工作_什麼不行?請描述問題 –

回答

1

你可以試試這個

<div class="sliderTitle"></div> 
<div class="sliderSubTitle"></div> 
<div class="sliderOverlay"></div> 

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
<script> 
    function easySlider(title, subTitle , overlay) { 
     var titleDisplay  = title ? 'block' : 'none'; 
     var subTitleDisplay = subTitle ? 'block' : 'none'; 
     var overlayDisplay = overlay ? 'block' : 'none'; 

     $(".sliderTitle").css("display", titleDisplay); 
     $(".sliderSubTitle").css("display", subTitleDisplay); 
     $(".sliderOverlay").css("display", overlayDisplay); 
    } 

    easySlider(false, false, false); 
</script> 
0
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 

    <p class="sliderTitle"> 
    Slider Title 
    </p> 
    <p class="sliderSubTitle"> 
    Slider Subtitle 
    </p> 
    <p class="sliderOverlay"> 
    Slider Overlay 
    </p> 

<script> 
function easySlider(titleP,subTitleP,overlayP){ 

    var title = titleP; 
    var subTitle = subTitleP; 
    var overlay = overlayP; 

    if(title===true) { 
    $(".sliderTitle").css("display","block"); 
    }else{ 
    $(".sliderTitle").css("display","none"); 
    } 
    if(subTitle===true) { 
    $(".sliderSubTitle").css("display","block"); 
    }else{ 
    $(".sliderSubTitle").css("display","none"); 
    } 
    if(overlay===true) { 
    $(".sliderOverlay").css("display","block"); 
    }else{ 
    $(".sliderOverlay").css("display","none"); 
    } 
} 


easySlider(true,false,false); 

https://jsfiddle.net/me2b0r56/

似乎是工作的罰款...

+1

這是因爲在運行javascript之前,默認情況下jsfiddle會等待文檔就緒狀態。只需編輯設置,使其立即在head標籤中運行,並且不再工作:https://jsfiddle.net/me2b0r56/1/ –

0

如果這是你的代碼(你想使所有隱藏在頁面加載),你必須等待t他記錄調用函數之前要準備好:

function easySlider(titleP,subTitleP,overlayP){ 
    var title = titleP; 
    var subTitle = subTitleP; 
    var overlay = overlayP; 

    if(title===true) { 
     $(".sliderTitle").css("display","block"); 
    }else{ 
     $(".sliderTitle").css("display","none"); 
    } 

    if(subTitle===true) { 
     $(".sliderSubTitle").css("display","block"); 
    }else{ 
     $(".sliderSubTitle").css("display","none"); 
    } 

    if(overlay===true) { 
     $(".sliderOverlay").css("display","block"); 
    }else{ 
     $(".sliderOverlay").css("display","none"); 
    } 
} 

$(document).ready(function(){ 
easySlider(false,false,false); 
}); 

否則,如果調用該函數的文檔被加載後,它工作正常。