Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在脚本标记内设置变量_Javascript_Html - Fatal编程技术网

Javascript 如何在脚本标记内设置变量

Javascript 如何在脚本标记内设置变量,javascript,html,Javascript,Html,我有一个页面名index.php。我在页面顶部有一个脚本变量,如下所示: <script> var search_quarry = "some_test"; </script> 这不起作用: <script src=search_quarry> </script> 谁能告诉我怎么做吗?这是不可能的。不能在javascript的声明标记内使用javascript变量。这就是标记的要点:标记中的所有内容都被解析为javascript;它

我有一个页面名index.php。我在页面顶部有一个脚本变量,如下所示:

<script>
    var search_quarry = "some_test";
</script>
这不起作用:

<script src=search_quarry> </script>


谁能告诉我怎么做吗?

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

您需要使用DOM操作:

var search_query = 'some_test';
s = document.createElement('script');
s.src = search_query;
document.getElementsByTagName('head')[0].appendChild(s);
或者,作为替代方案,尽管我不确定这是否有效:

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

var search_query='some_test';
document.getElementById('fixme').src=search\u query;

为什么要这样做?似乎是一个黑客使服务器代码工作,而不修复后端

选项1与document.write一起使用

<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>

var scr=document.createElement(“脚本”);
scr.src=搜索和采石场;
document.getElementsByTagName(“head”)[0].appendChild(scr)//或者将body与文档onready一起使用

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

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+"'/>");
});
$(文档).ready(函数(){
$(文件)。附加(“”);
});

Lol,为什么会被否决。你完全正确。。最重要的答案甚至不是这个特定问题的解决方案……在我读这篇文章的前几次,它对我来说似乎并不正确。我终于意识到我的困惑来自两个因素。1) “在声明标签内”我读的和“标签内的所有东西”(内容)一样。也许“作为脚本标记声明中的属性”会更清楚。2) IMHO,“在他们之外”的意思是“文件中的其他地方”。“标记声明”本身既不是“自身内部”也不是“自身外部”;您会得到:“UncaughtTypeError:无法将属性'src'设置为null”复制选项1时要小心:在“'”之后放置两个“+”字符>更好的方法是在服务器编程语言(可能是php)中创建一个变量。然后,将php变量插入HTML中任何您想要的位置都是很简单的。您正在尝试使用浏览器编程语言(javascript)执行一项任务,在HTML发送到用户浏览器之前,使用服务器编程语言执行该任务更为明智。
$(document).ready(function(){
    $(document).append("<script type='text/javascript' src='"+search_quarry+"'/>");
});