2016-03-29 9 views
0

私はいくつかの人がこの質問の一部を尋ねて、さまざまな解決策を試みたが、何も動作していないようだ。プロジェクトのコンビネーションやそれ以外のものが動作しないのかどうかはわかりません。文書を準備している.jsファイルにパラメータを渡す

私のプロジェクトでは、同様のDataTableを表示するさまざまなページがあります。私は重複を節約するためにこれらのテーブルの初期化を一つのファイルに入れたいと思っています。しかし、私はパラメータの間の小さな違いを説明するためにパラメータを渡したいと思います。列ヘッダ。それを複雑にするだけで、初期化はdocument.readyで驚くことではありません。

物事は私が試してみました:コード例で
Pass vars to JavaScript via the SRC attribute
http://feather.elektrum.org/book/src.html

私は2番目の警告を打つことはありません下回ります。私はそれが第二と第三のアラートをヒットするためならばしたいとtest_varの内容のために正しいことが:

(CS)htmlファイル

<script> 
    $(document).ready(function() { 
     var test_var = "Hopefully this has worked"; 
     alert("Pre TestScript"); 
     $.getScript("TestScript.js"); // Tried different paths to the file here as well 
    }); 
</script> 

TestScript.js

alert("In the TestScript"); 
alert("Test variable is: " + test_var); 

おそらく私は間違っていると思いますし、document.readyの間にスクリプト(ファイル)にパラメータを渡すのに別の方法もあります。

+1

あなたは 'TestScript.js'で関数を定義し、それらの関数をパラメータを渡すように呼んだと思います。 – Zack

+0

TestScript.jsファイルはいつロードされますか? –

+0

https://api.jquery.com/jquery.getscript/は、グローバルコンテキストレベルでスクリプトが取得され、実行されたと言いますので、 '$ $ 'のスコープ内のtest_var変数についてはわかりません(ドキュメント).ready(function(){...}) '。 – Zack

答えて

0

多くの人々が正しく答えた変数によって影響されるそれらの要素にデータの属性を追加しない場合は、このソリューションは、最も理にかなっています私の質問、皆さんありがとう。私がそれを働かせていた問題は、私がパラメータを渡そうとしていたスクリプトファイルがViews/Sharedフォルダにあり、それはhereがブロックされていることです。

ビューフォルダからスクリプトを移動すると、すべて正常に機能しました。上記の答えに加えて、私が見つけた最も簡単なのはthis

1

それを行うための最も簡単な方法は、私はtest_varだけdocument.ready内で定義されることが想定より上

<script> 
    $(document).ready(function() { 
     var test_var = "Hopefully this has worked"; 
     alert("Pre TestScript"); 
     window.test_var = "Hopefully this has worked"; 
     $.getScript("TestScript.js"); // Tried different paths to the file here as well 
    }); 
</script> 

を(変数名test_varがグローバル変数または内蔵のプロパティ/メソッドなっていないと仮定すると)になります。それ以外の場合は、グローバル変数の場合は、windowなしでアクセスできます。

そして、あなたのTestScript.jsで、それは

alert("In the TestScript"); 
alert("Test variable is: " + test_var); 
delete window.test_var; 
-1
$(document).ready(function() { 
    test_var = "Hopefully this has worked"; 
    $.getScript("TestScript.js"); // Tried different paths to the file here as well 
}); 
+0

あなたがここに表示しようとしていることは明確ではありません。質問の一部をコピーして回答するように見えます。 – Zack

+0

アラートとvarキーワードを削除してコードを更新しました。 –

+0

これはうまくいかないと思われる理由を説明していません(ヒント、それはありません)。 – Zack

0

を消費された後に、単にファイルを取得するための要求であるとして残念ながら、あなたはURLを通じてJSファイルにパラメータを渡すことができない変数を削除JSコード内では使用できません。

あなたはそれで読み取ることができますページ内のJSファイルを、次のようなものが含ま前に代わりにあなたは変数を宣言することができます

foo.htmlという

<script> 
    var test_var = "Hopefully this has worked"; 
</script> 
<script src="testscript.js"></script> 

testscript.js

console.log(test_var); // = "Hopefully this has worked" 
+0

これを試してみました。 –

0

コードを関数にラップする必要があります。

function testScript(test_var) { 
    alert("In the TestScript"); 
    alert("Test variable is: " + test_var); 
} 

そして、あなたはこのようにそれを使用することができます:私は、これはあなたの問題を解決すべきだと思う

<script> 
    $(document).ready(function() { 
     var test_var = "Hopefully this has worked"; 
     alert("Pre TestScript"); 
     $('<script>') 
      .attr('type', 'text/javascript') 
      .attr('href', 'TestScript.js') 
      .appendTo('head'); 
     testScript(test_var); 
    }); 
</script> 
0

。 TestScriptをインクルードします。jsをHTMLページに追加します。

(CS)htmlファイル

<script> 
    $(document).ready(function() { 
     var test_var = "Hopefully this has worked"; 
     alert("Pre TestScript"); 
     executeCommonScript(); 
    }); 
</script> 

TestScript.jsこれまでに提案されている他の偉大な解決策に加えて

function executeCommonScript(){ 
    alert("In the TestScript"); 
    alert("Test variable is: " + test_var); 
} 
0

、異なるオプションが置いてありますあなたのHTMLに何らかの形で定義する必要のある変数データの属性として、

とにかくjQueryのを使用しているので、このようなものは動作します:

$(document).ready(function() { 
 
    var test_var = $('.data-container').data('test-var'); 
 
    alert('Don\'t be alarmed: '+test_var); 
 
});
.data-container { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="data-container" data-test-var="This is just a test"></div>

あなたはあなたので、あなたには、任意のファイルにこれらのデータの属性にアクセスすることができます変数を前後に渡すことについて心配する必要はありません。もちろん

あなたは自分の変数を保持するためのdivを追加し、実際

関連する問題