0

目前,我将网站作为我的个人项目。我已经测试了我的 javascript,它在 chrome 和 firefox 上都可以正常工作。但是当我在 IE 中测试它时,只有部分代码有效。奇怪的是,当我按 f12 并打开开发者工具时,代码运行完美!工作就像它应该做的那样,没有任何错误。

这是我的javascript:

var state_Clicked = false;
var List = document.createElement("div");

function gearClick() {
    if(state_Clicked == true) {
        List.parentNode.removeChild(List);
        state_Clicked = false;
    } else {
        List.setAttribute("id", "containBox");
        List.setAttribute("class", "bgChooserBox");
        List.innerHTML = '<span class="thumback"><img onMouseDown="changeBackground(\'RD1_SlurpyNom.jpg\');" class="thumb" src="GRAPHICS/bg/RD1_SlurpyNom.jpg" width="100" height="100" /></span> \
                          <span class="thumback"><img onMouseDown="changeBackground(\'FS1_SlurpyNom.jpg\');" class="thumb" src="GRAPHICS/bg/FS1_SlurpyNom.jpg" width="100" height="100" /></span> \
                          <span class="thumback"><img onMouseDown="changeBackground(\'AJ1_SlurpyNom.png\');" class="thumb" src="GRAPHICS/bg/AJ1_SlurpyNom.png" width="100" height="100" /></span> \
                          <span class="thumback"><img onMouseDown="changeBackground(\'PP1_SlurpyNom.png\');" class="thumb" src="GRAPHICS/bg/PP1_SlurpyNom.png" width="100" height="100" /></span> \
                          <span class="thumback"><img onMouseDown="changeBackground(\'R1_SlurpyNom.jpg\');" class="thumb" src="GRAPHICS/bg/R1_SlurpyNom.jpg" width="100" height="100" /></span> \
                          <span class="thumback"><img onMouseDown="changeBackground(\'TS1_SlurpyNom.jpg\');" class="thumb" src="GRAPHICS/bg/TS1_SlurpyNom.jpg" width="100" height="100" /></span> ';
        document.getElementsByTagName("body").item(0).appendChild(List);

        state_Clicked = true; 
    }
}

function changeBackground(name) {
    console.log('/GRAPHICS/bg/' + name);
    document.getElementById("body").style.backgroundImage = 'url(/GRAPHICS/bg/' + name + ')';
    document.getElementById("logo").style.opacity = '0.4';
}

任何帮助将不胜感激。

4

2 回答 2

0

console.log是最有可能导致您出现问题的事情。控制台不是 DOM 中的实际对象,它通常由诸如 firebug、chrome 开发人员工具、IE 开发人员工具等工具添加到那里。较新版本的 Chrome 和 Firefox 在未打开时会忽略控制台调用。或者至少我认为情况就是这样,因为现在很多人都在使用控制台进行调试,并且它可以让人们更轻松地进行调试。

无论如何,在您使用 IE 的情况下,当您打开开发工具时,控制台是一个活动对象,因此您的脚本在打开时不会中断,但是当它关​​闭时,控制台对象不存在,因为它不存在并且不存在否则在这种情况下被浏览器忽略,脚本正在中断。

从现在到世界末日,IE 已经并且很可能永远是每个 Web 开发人员的眼中钉。

如果您想使用控制台进行调试,我的建议是在逻辑中添加一个 if-else,以便您可以打开和关闭它来回翻转..

就像是if(console.length > 0){console.log('blah');}

于 2012-07-25T02:15:09.257 回答
0

删除console.log呼叫。它需要一个console可用的对象,否则会抛出错误。这就是为什么当您打开开发人员工具时它可以工作,它们提供了一个控制台。

于 2012-07-25T02:14:33.840 回答