2012-07-12 52 views
4

我有一个页面名称index.php。我有一个脚本变量作为页面的顶部如下:如何设置脚本标记内的变量

<script> 
    var search_quarry = "some_test"; 
</script> 

在同一页面的底部我想这个变量添加到src属性的脚本标签:

<script src=NEED_TO_ADD_HERE></script> 

这是行不通的:

<script src=search_quarry> </script> 

任何人都可以请告诉我如何做到这一点?

回答

8

你需要做的DOM操作:

var search_query = 'some_test'; 
s = document.createElement('script'); 
s.src = search_query; 
document.getElementsByTagName('head')[0].appendChild(s); 

,或者作为替代,虽然我不知道,如果this'd工作:

<script id="fixme"></script> 
<script type="text/javascript"> 
    var search_query = 'some_test'; 
    document.getElementById('fixme').src = search_query; 
</script> 
+0

第二个变体不起作用,因为我猜脚本标记不是文档元素;你会得到:“Uncaught TypeError:无法设置null的属性'src'” – RoyM 2017-05-21 18:51:35

-2

这是不可能的。您不能在javascript的声明标签内使用JavaScript变量。这就是标签的要点:它们中的所有内容都被解析为javascript;他们之外的一切都不是。

+1

大声笑,为什么这是低估。你是100%正确的..最好的答案甚至不是这个具体问题的解决方案... – 2016-11-16 11:39:49

1

为什么你会做这个?似乎是一个黑客攻击,使服务器代码工作无固定后端

选项1是文件撰写

<script> 
    document.write("<script src='" + search_quarry + "'></scr" + "ipt>"); 
</script> 

方案2是使用的createElement和使用appendChild

<script> 
    var scr = document.createElement("script"); 
    scr.src = search_quarry; 
    document.getElementsByTagName("head")[0].appendChild(scr); //or use body with document onready 
</script> 
+0

复制时小心选项1:在''>之后放置两个'+'字符会导致代码中的问题,所以它应该只有一个'+'。 – Burak 2017-11-15 08:25:56

0

这里有一个简单方式做你想做的事

window.onload=function(){ 
    var script=document.createElement("script"); 
    script.type="text/javascript"; 
    script.src=search_quarry; 
    document.appendChild(script) 
} 

虽然你想改变window.onload变成别的东西或只是把代码放在顶层,或者如果使用jQuery:

$(document).ready(function(){ 
    $(document).append("<script type='text/javascript' src='"+search_quarry+"'/>"); 
});