gpt4 book ai didi

javascript - 我的 Javascript 适用于 IE FF 和 Safari,但不适用于 Chrome

转载 作者:行者123 更新时间:2023-11-28 12:08:57 26 4
gpt4 key购买 nike

我正在开发的网站上有一个简单的旋转横幅 javascript。它在本地完美运行,在 IE、Firefox 和 Safari 上运行,但在 Chrome 上运行不佳。我的代码有问题吗?我是 Javascript 新手,所以这个问题确实让我困惑。相关代码如下:

<script language="Javascript" type="text/javascript">
adImages = new Array
("images/AMSite18.png","images/AMSite19.png","images/AMSite09b.png")
thisAd = 0
imgCt = adImages.length

function rotate() {
if (document.images) {
thisAd++
if (thisAd == imgCt) {
thisAd = 0
}

document.adBanner.src=adImages[thisAd]
setTimeout("rotate()", 3 * 1000)
}
}
</script>
</head>

<body onload="rotate()">
<div id="banner">
<img src="images/banner1.gif" name="adBanner" alt="Ad Banner" />
</div><!-- end banner -->
</body>

最佳答案

看起来它在 Chrome 中不起作用的原因是这一行:

document.adBanner.src=adImages[thisAd]

您通过 document.adBanner 引用名为“adBanner”的元素,但是Chrome doesn't support that 。你必须使用这样的东西:

document.getElementsByName('adBanner')[0].src = adImages[thisAd];

其他一些可以提高代码质量的事情:

  1. 不要使用 language属性。非必需。

  2. 使用格式 var x = [...];创建一个新数组。没有理由使用构造函数格式。一个都没有。之宝。没有人可能会因为您使用 new Array(...) 的原因而评论此答案反而。没有人。

  3. 使用var关键字用于创建变量,分号用于结束语句。 虽然它不会对这里造成任何损害,但如果您不使用 var ,那么 JavaScript 假设您正在创建/更改一个全局变量,但情况不一定如此。 (此外,分号规则可能有点复杂,但它确实有助于提高可读性。)

  4. 您为什么要检查 document.images这是不必要的。您不会在其他任何地方引用它。

  5. Crockford 建议使用 x += 1而不是x++ .没什么大不了的,很多人不同意,只是我注意到的。

  6. 始终使用严格相等 (===)。您使用的类型 (==) 不考虑类型; 2 == "2"将返回true,但是2 === "2"将不会。再说一次,没什么大不了的,有些人并不真正关心,但它可能会在以后的不同项目中困扰你。

  7. 切勿将字符串传递给 setTimeout . 浏览器只是评估字符串,没有人会和 eval 的人一起出去玩。东西。您甚至不需要传递字符串,因为您使用的函数不需要任何参数!只需使用这个:

    setTimeout(rotate, 3 * 1000);
  8. 尝试将脚本标签放在正文的底部。这样做有两个原因。首先,性能。当浏览器到达您的脚本时,它会停止一切来解析和执行代码。如果将其放在正文的底部而不是头部,则页面至少会显得加载速度更快。接下来解决第二点:

  9. 尽量避免使用 onload . 这只是粗俗的。您需要这样做的原因是因为您的脚本位于头部,并且还无法访问 DOM。但是,如果该脚本被移动到正文的底部(由于某种原因,您可能无法这样做;没什么大不了的),您就不必弄乱 onload完全:

    <body>
    <div id="banner">
    <img ... />
    </div>

    <script>
    // Copy all of your code exactly the same,
    // and then:

    rotate();
    </script>
    </body>
  10. 看在上帝的份上,不要使用 name属性。对于表单,谁在乎呢?但是当您使用 JavaScript 操作元素时,请使用 id。你在做什么一目了然,并且document.getElementById('adBanner')document.getElementsByName('adBanner')[0] 快得多.

enter image description here

关于javascript - 我的 Javascript 适用于 IE FF 和 Safari,但不适用于 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5826102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com