私はこの答えを数日間にわたって何時間も探してきましたが、プロジェクトにファイルを含める方法に関する多くのトピックがありますが (これも Stack Overflow にあります)、私の問題に対する解決策をまだ見つけていません。
私は、多くの異なるファイルから一度に 1 つのオブジェクトを含めたいプロジェクトに取り組んでいます (ファイル自体を含めるのではなく、そのコンテンツのみを含めたくありません)。すべてのファイルのすべてのオブジェクトは同じ名前で、内容のみが異なります。
ファイルのすべてのコンテンツが同じ名前になるため、ページの head セクションに SCRIPT タグを付けないことが重要です。とにかく、どのファイルにも関数はありません。一度に1つずつロードし、次の要素がロードされたときに破棄する必要がある単一のオブジェクトのみです。
オブジェクトは、ページに表示されるデータを保持し、「onclick」イベントによってメニューから呼び出されます。
function setMenu() // The menu is being build.
{
var html = '';
html += '<table border="0">';
for (var i = 0; i<menu.pages.length; i++)
{
html += '<tr class="menuPunkt"><td width="5"></td><td onclick="pageName(this)">'+ menu.pages[i] +'</td><td width="5"></td></tr>';
}
// menu is a global object containing elements such as an array with
// all the pages that needs to be shown and styling for the menu.
html += '</table>';
document.getElementById("menu").innerHTML = html;
style.setMenu(); // The menu is being positioned and styled.
}
ここで、メニュー項目をクリックすると、pageName 関数がトリガーされ、HTML 要素も関数に送信されます。ここで、外部ファイルのコンテンツをローカル変数にロードして使用する必要があります。ページにコンテンツを表示します。
私が欲しい答えは、「外部オブジェクトを必要な関数にロードする方法は?」です。(外部ファイルでも構いませんが、プロジェクトの head セクションに含まれないという条件でのみ)。私はまだ自分のローカル ライブラリからファイルを読み込んでいます。
function pageName(elm) // The element that I clicked is elm.
{
var page = info.innerHTML; // I need only the innerHTML from the element.
var file = 'sites/' + page + '.js'; // The file to be loaded is created.
var obj = ?? // Here I somehow want the object from the external file to be loaded.
// Before doing stuff the the obj.
style.content();
}
外部ファイルのコンテンツは次のようになります。
// The src for the external page: 'sites/page.js'
var obj = new Object()
{
obj.innerHTML = 'Text to be shown';
obj.style = 'Not important for problem at hand';
obj.otherStuff = ' --||-- ';
}
どんな助けでも大歓迎です、
モール