我想使用下面的switch語句來改變一個全局變量,但它只會改變一次。爲什麼我的變量不變?
HTML
<button type="button" value =15>16x16</button>
<button type="button" value =31>32x32</button>
<button type="button" value =63>64x64</button>
的JavaScript
var initial_size = 15;
var $cl;
var $size;
$(document).ready(function(){
populate(initial_size);
});
function populate(size){
$('.main-table').empty();
$size = size;
switch($size){
case 15:
$cl = 'box';
break;
case 31:
$cl = 'bigger-box';
console.log("case 31");
break;
case 63:
$cl = 'biggest-box';
console.log("case 63");
break;
default:
break;
}
console.log($cl);
for(var i=0; i < $size; i++){
$tr = $("<tr></tr>");
for(var j=0; j < $size; j++){
$div = $("<div class=" +$cl+"></div>");
$div.css('background-color', 'lightslategrey');
$tr.append($("<td></td>").append($div));
}
$(".main-table").append($tr);
}
run();
};
function run(){
$('.box').hover(function(){
$(this).css('background-color', 'black');
});
$('button').click(function(){
console.log($(this).val());
populate($(this).val());
});
};
所以,當我跑我的代碼,$ CL將被設置爲 '盒子',但每當我點擊另一個按鈕,循環再次運行,$ cl不會更改爲其他任何類。我是否使用switch語句錯誤,或者我沒有正確解析該值,或者是因爲使用全局變量而導致的問題?我使用全局變量的唯一原因是因爲我不太熟悉JavaScript中的範圍工作方式,所以我認爲這種方式可能更容易。
您發佈的代碼不完整,但是從您發佈的內容來看,您實際上並沒有運行'run()'函數來設置事件處理程序。另外,你還沒有用閉合括號關閉你的'run()函數''' –
嘗試在jsfiddle.net上創建一個小提琴並鏈接到你的問題中的小提琴。 –
也沒有關閉你填充函數。這裏的最後一個關閉大括號與switch語句 –