0

次のようなjavascript変数がある場合、それは可能ですか:

var myVariable = "alert('BAM! It works!');"

つまり、script タグを含む html ページに送信するには、次のようになります。 <script id="theScriptTag"></script>

「送信」とは、Javascript ファイルで次のようにすることを意味します。

getElementById("theScriptTag").innerHTML = myVariable;

今、おそらく人々は通常これをしません。Javascript 変数を HTML ページに取得する別の方法がある場合は、ためらわずに教えてください。なぜこのようにしたいのかを説明するのは難しいですが、このようにする必要があるということだけです。

前もって感謝します!

編集...

私が見ることができるすべてのコメントから、これは深刻な悪い習慣です。ここで概要と「全体像」を示しましょう...まったく同じ HTML ページに、フォームと div があります。ユーザーがフォームに入力して送信するとすぐにサーバーに送られ、ユーザーが選択した変数に応じて「カスタム JavaScript」が生成されます。このカスタム JavaScript は、クライアントに戻って実行することを目的としています。実行すると、Google チャート テーブルを含む div 要素が作成/入力されます (したがって、生成されたサーバー側を取得する必要があります)。実行する必要がある JS は次のようになります。

var sendAttemptsChartTableData, sendAttemptsChartTable; 
google.load('visualization', '1', {packages:['table']}) 
 google.setOnLoadCallback(drawTable); 
 function drawTable() { 
sendAttemptsChartTableData = new google.visualization.DataTable();  
sendAttemptsChartTableData.addColumn('string','smsGuid')  
sendAttemptsChartTableData.addColumn('string','attemptNo')  
sendAttemptsChartTableData.addColumn('string','response')  
sendAttemptsChartTableData.addColumn('string','error')  
sendAttemptsChartTableData.addRows(1)  
sendAttemptsChartTableData.setCell(0,0,'092A49AA-E2EF-46D3-A83E-0932B17B649A')  
sendAttemptsChartTableData.setCell(0,1,'1')  
sendAttemptsChartTableData.setCell(0,2,'<aatsms><submitresult action="enqueued"     key="2066317199" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317200" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317201" result="1" number="0833756610"/><submitresult action="enqueued" key="2066317202" result="1" number="0833756610"/></aatsms>')  
sendAttemptsChartTableData.setCell(0,3,'')  
sendAttemptsChartTable = new  google.visualization.Table(document.getElementById('sendAttemptsTable')); 
var view = new google.visualization.DataView(sendAttemptsChartTableData);   
sendAttemptsChartTable.draw(view, {showRowNumber: true, allowHtml:false}); 
google.visualization.events.addListener(sendAttemptsChartTable, 'select', smsSearchHandler); 
}  
4

3 に答える 3

3

あなたの編集に基づいて、フォームの提出がカスタムスクリプトになることを理解しています。のJSONPようなソリューションは機能しますか? 基本的に、フォームを処理してコードを返すサーバー側スクリプトをソースにポイントするスクリプト タグを現在のドキュメントに作成できます。

基本的な例:

function getScript(){
  /**process form, generate params**/
  var nwScript = document.createElement('script');
  nwScript.src = '/myscriptsrc/somescript.php?'+[generated parameters];
  document.body.appendChild(nwScript);
}
于 2012-05-07T12:45:30.810 に答える
1

文字列に含まれるjavascriptコードを実行することが目標の場合は、次を使用できます。

var myVariable = "alert('BAM! It works!');";
eval(myVariable);
于 2012-05-07T12:23:37.773 に答える
1

あなたがやろうとしていることは本質的にこれです:

var myVariable = "alert('BAM! It works!');";
eval(myVariable);

eval指定した文字列を取得し、コンテンツを「評価」します。文字列で指定したjavascriptを実行します。通常、これはユーザーからの入力で行います。

しかし、これは悪い習慣と見なされます。理由は次のとおりです。

  1. 遅いです
  2. 安全ではありません

通常は別の方法で移動できるため、を使用する必要はありませんeval。ほとんどの場合、これはよりクリーンで、より速く、より安全です。

おそらくあなたはあなたが何を達成しようとしているのかを知ることができ、それから私たちはより良い解決策を見つけることができます。

于 2012-05-07T12:25:20.423 に答える