我正在尝试将内部HTML脚本元素转换为外部Javascript文件。<script>
元素在超文本标记语言中工作得很好,但我不知道需要做什么修改才能从外部Javascript文件中工作。我现在所做的就是“触发”--它确实会产生随机的图像--但它会全屏显示它们,从而屏蔽整个网站。
下面是有效的HTML <script>
<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元素替换为:
<div id="firstads"></div>
并添加了
<script src="javascript/rec_images.js" async></script>
添加到head元素。
在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文件在中随机生成超链接图像。图像需要足够小,以便放在旁注列中,但目前它们的大小与浏览器的大小相同。如果能帮助我解决这个问题,我将不胜感激!
发布于 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元素。您可以像这样将其添加到正文的末尾:
// ... random_img setups
// replacing document.write
document.querySelector('body').innerHTML += (random_img[random_number]);
您可以使用querySelector、getElementById、getElementsByClassName和其他选择器。我一般推荐querySelector,比如谷歌:)。
此外,如果您有时间,我建议您查看document.createElement,并添加函数以将元素添加到标记中,而不是通过文本设置innerHTML。以下是为什么不鼓励使用innerHTML的一些答案:
https://stackoverflow.com/questions/55779550
复制相似问题