是否有可能,如果有一个像这样的javascript变量:
var myVariable = "alert('BAM! It works!');"
将其发送到带有脚本标记的html页面,换句话说,如下所示:
<script id="theScriptTag"></script>
和'发送'我的意思是在Javascript文件中这样:
getElementById("theScriptTag").innerHTML = myVariable;
现在也许人们通常不会这样做。如果还有另一种方法可以将Javascript变量添加到HTML页面,请不要犹豫。我很难解释为什么我想这样做,只是我需要这样做。
提前致谢!
修改...
从所有评论中我可以看出这是一些严重的不良做法。让我在这里给你一些视图和'更大的图片'......在同一个HTML页面上有一个表单和一个div。现在,在用户填写表单并提交表单后,它会立即转到服务器,并根据用户选择的变量生成“自定义javascript”。然后,此自定义javascript将返回到客户端并执行。当它执行时创建/填充一个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);
}
答案 0 :(得分: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 :(得分:1)
如果您的目标是执行字符串中包含的javascript代码,则可以使用以下命令:
var myVariable = "alert('BAM! It works!');";
eval(myVariable);
答案 2 :(得分:1)
你要做的就是这个:
var myVariable = "alert('BAM! It works!');";
eval(myVariable);
eval
获取您提供的字符串并“评估”内容 - 它执行您在字符串中提供的javascript内容。通常你想用来自用户的输入来做这件事。
但这被认为是坏习惯,因为:
通常您可以采用其他方式,因此您无需使用eval
。在大多数情况下,这更清洁,更快速,更安全。
也许您可以说,您想要实现的目标,然后我们可以找到更好的解决方案。