2012-05-07 14 views
0

は、それが可能です:他の言葉で、中にスクリプトタグを持つHTMLページにそれを送信するためにJavaScript変数「スクリプトタグ」

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

を、 <script id="theScriptTag"></script>

と私はJavascriptファイルに次のように行く意味「送信」によって:

getElementById("theScriptTag").innerHTML = myVariable; 

多分人々は通常、これをしない、このようになります。 HTMLページにJavascript変数を取得する別の方法がある場合は、教えてください。私が説明することは難しいなぜ私はこれのようにしたいと思います、それだけですのようにこれを行う必要があります。

ありがとうございます!私はこれを見ることができるすべてのコメントから

EDIT ...

は、いくつかの深刻な悪い習慣です。私はあなたに上の見解を与え、ここでは「もっと大きな写真」を与えましょう。まったく同じHTMLページには、フォームとdivがあります。ユーザーがフォームに記入して送信すると、サーバーに行き、ユーザーが選択した変数に応じて「カスタムjavascript」が生成されます。このカスタムjavascriptは、クライアントに戻って実行することを意図しています。それが実行されると、div要素が作成され/埋められ、次にGoogleのグラフ表が含まれます(したがって、生成されたサーバー側を取得する必要があります)。

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); 
} 
+0

はなぜ、必要な変数を作成しませんか? – KBN

+3

これは厄介なようです。私を信じて、あなたはこれをしたくない。一歩踏み込んで、あなたがしようとしていることを再考してください。 JSを評価することは、一般的には悪い考えです。 – Christoph

+0

正しい解決策ではありません。これは 'eval()'から非常に狭く削除されています。あなたが達成しようとしていることを明確にすることができれば、おそらく非常に簡単な方法があります。 – bkconrad

答えて

3

あなたの編集に基づいて、私はあなたのフォームsumbissionの結果がカスタムスクリプトであることを理解しています。 JSONPのような解決策はありますか?基本的には、現在のドキュメントにスクリプトタグを作成し、フォームを処理してコードを返すサーバーサイドスクリプトにそのソースを指すことができます。

基本的な例:

function getScript(){ 
    /**process form, generate params**/ 
    var nwScript = document.createElement('script'); 
    nwScript.src = '/myscriptsrc/somescript.php?'+[generated parameters]; 
    document.body.appendChild(nwScript); 
} 
1

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

あなたがしようとしている何
var myVariable = "alert('BAM! It works!');"; 
eval(myVariable); 
+0

ヒントのオリーブ、ありがとう、私は何をしたいのですか?やりたい – Tiwaz89

1

実行する必要がJSは、このようになりますやる基本的にこれです:

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

evalは、指定した文字列を受け取り、内容を「評価する」 - それはあなたが文字列で提供javascriptのものを実行します。通常、これはユーザーからの入力で行います。

しかし、この考えられている悪い癖は、ので:

  1. それは遅いです
  2. あなたがevalを使用する必要はありませんので、

は通常あなたが、別の道を行くことができ、安全でないです。ほとんどの場合、これはよりクリーンで、より速く、より安全です。

おそらく、あなたが達成しようとしていることを伝えることができますし、より良い解決策を見つけることができます。

+0

ちょっと@Christoph、私の編集をチェックしてください... – Tiwaz89

+0

@DeanGroblerちょっとディーン、KooiIncの答えを見て、これは良い解決策でなければなりません。私は似たようなことをやろうと思いますので、私は自分の答えを編集せず、自分の解決策を指摘します。 – Christoph

関連する問題