正如标题所说,我在使用 IE8 和 Javascript 时遇到了一些问题。众所周知,它在解释全局变量时存在错误:如果您不声明为,它就不会获取它们:
var variable1 = something;
问题是我正在尝试制作一个脚本来更改单击按钮的主体背景,我需要一个全局变量来包装实际状态(我正在加载的 bg-x.png)。该脚本适用于 FF、Safari 和 Chrome,但显然不适用于 IE。帮助? (问题出在变量“status”上)
$('#change').click(function() {
var numStates = 2;
var name = $(this).text();
if(!(status)) {
status = parseInt(1,10);
}
if(status<numStates) {
status = parseInt(status,10) + 1;
}
else {
status = parseInt(1,10);
}
alert(status);
var bgvar = null;
switch(parseInt(status,10)) {
case 1: var bgvar = ' #7097ab url(./img/bg-' + status + '.png) top center repeat';
var name = 'Pattern';
break;
case 2: var bgvar = ' #7097ab url(./img/bg-' + status + '.png) top center repeat-x';
var name = 'Sfumato';
break;
default: alert('Default');
}
$('body').css({
background:bgvar,
});
$(this).text(name);
}
);
即使在 IE 下也能工作的代码(感谢 Zeta):
$('#change').click(function() {
var numStates = 2;
var name = $(this).text();
// If data-status isn't defined set it to the initial value
if($('body').data('status') === undefined)
$('body').data('status',1);
// Extract the status
var status = parseInt($('body').data('status'),10);
// Handle the status
if(status < numStates)
status++;
else
status = 1;
// Save the status
$('body').data('status',status);
switch(status) {
case 1: bgvar = ' #7097ab url(./img/bg-' + status + '.png) top center repeat';
name = 'Pattern';
break;
case 2: bgvar = ' #7097ab url(./img/bg-' + status + '.png) top center repeat-x';
name = 'Sfumato';
break;
default: alert('Default');
}
$('body').css({
background:bgvar,
});
$(this).text(name);
}
);
最佳答案
status 是窗口对象的预定义成员,指向状态栏的内容。使用另一个变量名
关于javascript - 带有全局变量的 IE 错误。如何绕过这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10258076/