1

次のスクリプトが最初の「else if」ステートメントに対してのみ機能する理由を教えてください。

幅が 800px 未満の場合でも、900px の設定が取得されます。

ここにライブコードがありますhttp://jsbin.com/iranof/2/

<script type='text/javascript'>
$(document).ready(function(){ 

var window_width = $(window).width();  

if (window_width >= 900){
$('#adSize').attr('id','largeRectangle');    
}
else 
  if (window_width <= 800)  
  {
$('#adSize').attr('id','mediumRectangle');
}  
else 
  if (window_width <= 700)  
  {
$('#adSize').attr('id','square');
}  
else
  if (window_width <= 600)  
  {
$('#adSize').attr('id','smallSquare');
}  
else if (window_width <= 480)
{
$('#adSize').attr('id','mediumRectangle');
} 
});
</script>
4

4 に答える 4

4

700 <= 800. window_width が 800 未満の場合、最初のelse ifチェックが返さtrueれ、その本体が呼び出されます。他のすべてはelse if無視されます。

<=チェックが増加する数を処理するようにコードを再構築します。

else if (window_width <= 480) { ... }
else if (window_width <= 600) { ... }
else if (window_width <= 700) { ... }
else if (window_width <= 800) { ... }
于 2012-11-03T10:41:28.307 に答える
0

これを試して...

<script type='text/javascript'>
$(document).ready(function(){ 

var window_width = $(window).width();  

if (window_width >= 900){
$('#adSize').attr('id','largeRectangle');    
}
else 
  if (window_width >= 800)  
  {
$('#adSize').attr('id','mediumRectangle');
}  
else 
  if (window_width >= 700)  
  {
$('#adSize').attr('id','square');
}  
else
  if (window_width >= 600)  
  {
$('#adSize').attr('id','smallSquare');
}  
else if (window_width <= 600)
{
  $('#adSize').attr('id','mediumRectangle');
} 
});
</script>
于 2012-11-03T11:03:32.623 に答える
0

次のようにする必要があります。

if (window_width >= 900){   
}
else 
  if (window_width <= 800 && window_width > 700)  
  {
}  
else 
  if (window_width <= 700 && window_width > 600)  
  {
} 

など...そうでなけれelse ifば、800ブランチに入ると、他のブランチは放棄されます。

于 2012-11-03T10:42:51.357 に答える