javascript - 带有全局变量的 IE 错误。如何绕过这个错误?

标签 javascript jquery internet-explorer

正如标题所说,我在使用 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/

相关文章:

javascript - Grails:使用 twitter bootstrap 分页显示动态内容?

javascript - 尽管有同源策略,但不缩短短 URI

返回函数的 Javascript 作用域错误函数

javascript - 使用 Javascript 根据 URL 显示 Div

javascript - 如果母版页具有灯箱 js 文件,则 Jquery 无法在子页中工作

jquery - Ajax 调用在 IE 中不起作用,除非您修改安全设置

javascript - 日期选择器在 Internet Explorer 中不起作用

javascript - AJAX循环完成后执行代码

javascript - Mustache/jQuery/javascript - 如何对 mustache 变量执行方法?

internet-explorer - IE9阻止跨源Web字体下载