2016-05-23 12 views
1

私は学校で仕事をしています。私はオンラインでゲームを買うためにplatafornをやっています。私はHTML、CSS、JSを使うことができます。情報と、ここでの例です:別のJavaScriptファイルとacessをロードする

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

そして、私のhtmlページは、1点である:

<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 =運命?)

私はidがchosed取得し、ファイルをロードするには、このコードを持っている:

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コードとonclickで私はloadinformation()彼がロード良いと言うが、私はページが読み込まれ、ここでは私がコンソールから得るエラーです自動したい:​​、私は多分ブラウザは時間がなかったと思うファイルをロードするには、私は知らない、誰かが私を助けることができますか?ありがとう、私の英語のために申し訳ありません。

答えて

2

問題は、ブラウザに新しいスクリプトを解析する機会を与えていないことです。あなたはsetTimeoutを使ってそれを行うことができます。

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

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

理想的には、あなたは、代わりにAJAXを使用して、それをロードするJSONファイルに保存されたデータを持っている必要があります。 JSONをAJAXにロードする方法については、多数のチュートリアルがあります。

@Bergiが指摘しているように、このソリューションは非常に脆弱で、スクリプトの読み込みは500ms以下に依存しています。代わりに、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(); 
    }; 
} 
+0

私はちょうどHTMLのCSSとJSを使用することができますが、私はそれを試してみます。 –

+0

私はそのコードを試しましたが、とにかく動作しませんでした。別のトリックを知っていますか?私は本当にそれを働かせたいです –

+0

@Azazelそれはどうしましたか? –

関連する問題