首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将内部<script>标记转换为外部Javascript文件?(用于随机图像生成器)

如何将内部<script>标记转换为外部Javascript文件?(用于随机图像生成器)
EN

Stack Overflow用户
提问于 2019-04-21 11:10:57
回答 1查看 748关注 0票数 -1

我正在尝试将内部HTML脚本元素转换为外部Javascript文件。<script>元素在超文本标记语言中工作得很好,但我不知道需要做什么修改才能从外部Javascript文件中工作。我现在所做的就是“触发”--它确实会产生随机的图像--但它会全屏显示它们,从而屏蔽整个网站。

下面是有效的HTML <script>

代码语言:javascript
复制
 <script class="randomad" type="text/javascript">
            var total_images = 7;
            var random_number = Math.floor((Math.random()*total_images));
            var random_img = new Array();
            random_img[0] = '<a href="http://www.antares-sellier.com/en/"><img src="javascript/js_images/antares.jpg"></a>';
            random_img[1] //....1-5 excluded here for brevity//
            random_img[6] = '<a href="http://www.scesports.org/"><img src="javascript/js_images/sces.jpg"></a>';
            document.write(random_img[random_number]);
            </script>

在HTML文件中,我将script元素替换为:

代码语言:javascript
复制
           <div id="firstads"></div>

并添加了

代码语言:javascript
复制
<script src="javascript/rec_images.js" async></script> 

添加到head元素。

在Javascript中,我删除了脚本标记并添加了一个函数,但我对Javascript还很陌生,不知道还需要添加或更改什么才能使转换正常工作

以下是出现故障的Javascript代码:

代码语言:javascript
复制
window.onload = random_ad;

 function random_ad () {
     document.getElementById("firstads");
    var total_images = 7;
    var random_number = Math.floor((Math.random()*total_images));
    var random_img = new Array();
    random_img[0] = '<a href="http://www.antares-sellier.com/en/"><img src="javascript/js_images/antares.jpg"></a>';
//....1-5 excluded here for brevity//
    random_img[6] = '<a href="http://www.scesports.org/"><img src="javascript/js_images/sces.jpg"></a>';
    document.write(random_img[random_number]);

 }

其目标是让外部JavaScript文件在中随机生成超链接图像。图像需要足够小,以便放在旁注列中,但目前它们的大小与浏览器的大小相同。如果能帮助我解决这个问题,我将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-04-21 15:51:56

同意跳跳虎的观点。

您在这里使用的是document.write():

https://www.w3schools.com/jsref/met_doc_write.asp

‘write()方法将HTML表达式或JavaScript代码写入文档。’

‘write()方法主要用于测试:如果在HTML文档完全加载之后使用它,它将删除所有现有的HTML。’

document.write()有时很有用,但通常不是标准实践。您需要设置innerHTML或附加一个HTML DOM元素。您可以像这样将其添加到正文的末尾:

代码语言:javascript
复制
// ... random_img setups
// replacing document.write
document.querySelector('body').innerHTML += (random_img[random_number]);

您可以使用querySelector、getElementById、getElementsByClassName和其他选择器。我一般推荐querySelector,比如谷歌:)。

此外,如果您有时间,我建议您查看document.createElement,并添加函数以将元素添加到标记中,而不是通过文本设置innerHTML。以下是为什么不鼓励使用innerHTML的一些答案:

Why is "element.innerHTML+=" bad code?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55779550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档