簡體   English   中英

HTML頁面“腳本標簽”的Javascript變量

[英]Javascript variable to html page 'script tag'

是否可能,如果有人有這樣的javascript變量:

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

將其發送到帶有腳本標簽的html頁面中,換句話說,如下所示: <script id="theScriptTag"></script>

通過“發送”,我的意思是在Javascript文件中執行以下操作:

getElementById("theScriptTag").innerHTML = myVariable;

現在也許人們通常不這樣做。 如果還有另一種將Javascript變量獲取到HTML頁面的方法,請不要猶豫。 我很難解釋為什么我想這樣做,只是我要這樣做。

提前致謝!

編輯...

從所有評論中,我可以看到這是一些嚴重的不良做法。 讓我在這里給您提供概述和“更大的圖片” ...在同一HTML頁面上,有一個表單和一個div。 現在,在用戶填寫並提交表單之后,它立即進入服務器,並根據用戶選擇的變量生成“自定義javascript”。 然后,該自定義javascript旨在返回客戶端並執行。 執行時,它會創建/填充一個div元素,然后該元素包含一個Google圖表表(因此需要獲取生成的服務器端)。 需要執行的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); 
}  

根據您的編輯,我了解您在自定義腳本中的表單匯總結果。 JSONP的解決方案是否可以工作? 基本上,您可以在當前文檔中創建一個腳本標記,將其源指向服務器端腳本,該腳本處理表單並返回代碼。

一個基本的例子:

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

如果您的目標是執行字符串中包含的javascript代碼,則可以使用以下代碼:

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

您實際上想做的是:

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

eval接受您提供的字符串並“評估”內容-它執行您在字符串中提供的javascript內容。 通常,您希望通過用戶輸入來執行此操作。

但這被認為是壞習慣,因為:

  1. 很慢
  2. 這是不安全的

通常,您可以采用另一種方式,因此無需使用eval 在大多數情況下,這更干凈,更快,更安全。

也許您可以說出您要實現的目標,然后我們可以找到更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM