gpt4 book ai didi

javascript - 加载另一个 JavaScript 文件并访问 var

转载 作者:行者123 更新时间:2023-11-30 16:03:08 25 4
gpt4 key购买 nike

我正在为学校工作,我正在做一个在线平台来在线购买游戏,我可以只使用 HTML、CSS 和 JS,所以对于每个游戏,我都有一个包含信息的 JS 文件,这里是示例:

 /*doom.js*/
var info = {
title : "doom",
price : "59.99",
off : "0%"
};

我的 html 页面就是那个:

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="games/functions.js"></script>

</head>
<body>
<label id="title"></label>
</body>
</html>

我的所有游戏都有该页面,所以我使用 GET 方法来了解我需要读取的文件。 (game.html?id=doom)

我有这段代码来获取选择的 id 并加载文件:

window.onload = function() {
id = getURLParameter('id');
loadGamefile("games/"+id+".js");
};

function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}

function loadGamefile(filename){
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
    
    if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref);

loadinformation();
}

function loadinformation(){
document.getElementById("title").innerHTML = info.title; //info.title is from the doom.js file
}

唯一的问题是他没有更改标签,但如果我在 btml 代码上放置一个按钮并单击我说它的 loadinformation() 他加载正常,但我希望在页面加载时自动加载,这是错误我从控制台得到:functions.js:22 Uncaught ReferenceError: info is not defined,我想可能是因为浏览器没有时间加载文件,我不知道,有人可以帮我?谢谢,对不起我的英语。

最佳答案

问题是您没有给浏览器解析新脚本的机会。您可以花点时间使用 setTimeout 来做这件事.

function loadGamefile(filename) {
// your other code goes here

setTimeout(function() {
loadinformation();
}, 500); // wait half of a second
}

理想情况下,您应该将数据存储在 JSON 文件中,然后使用 AJAX 加载它。有许多教程介绍了如何通过 AJAX 加载 JSON。

正如@Bergi 所指出的,此解决方案非常脆弱并且依赖于 500 毫秒内的脚本加载。相反,您可以 listen for the load event以确保您在脚本准备就绪后立即使用它。

function loadGamefile(filename) {
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)

if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref);

// Wait for the script to load
fileref.onload = function() {
loadinformation();
};
}

关于javascript - 加载另一个 JavaScript 文件并访问 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397043/

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