
楼上的方式是可以实现,但是就是要判断到底距离目标文件的位置;
所以最好就是用相对根路径;
即
<script type="text/javascript" src="/test/hits/xxxxxjs"></script>
这样的话,无论你在任何位置都可以正确调用你的文件了。
您需要的功能可以利用AJAX来实现。下面是我写的代码读取一个文件并显示出来,供您参考。
<!doctype html><html>
<head>
<meta charset="utf-8">
<title>使用AJAX读取外部文件</title>
</head>
<body>
<div id="txt">外部文件内容</div>
<script>
if ( windowActiveXObject ) // windows 系统
xml>
看的出来,你不懂浏览器解释标签的顺序。你百度一下就知道了,我这里只是说一下结果。
浏览器在执行脚本前,要把所有的脚本导进来。怎么导进来,直接认script标签。也就是说,浏览器还在不知道是不是变量的前提下,先解释了你的 script 标签。然后发现是错误的!!错误在哪它把你变量的</script>认作结束标签了。(呵呵,毕竟是机器语言,没那么智能,你必须了解它的执行顺序。)然后它把整个String语句弄成错误语句了,就直接把后面输出了。
所以直接答案就是不能让它认做script的结束标签,你要写成类似于这样:
var html ='<div class="post"><' + 'script' + ' src="tophtml" ></'+'script'+'></div>';
先让浏览器的解释器看不出来是结束标签,之后在组装成标签,在append。
哦对了,还有两点要和你说,也许你知道,一个是你用的jquery,必须等所有html文档结构都读进来后才能append,所以你必须把这个核心代码放到 $(function($){ })里面。(不明白就差api中的jQuery(callback)章节)
二一个是你导入的是php,看的出不是脚本语言,你要把它当作text读进来,所以你要加个type="text",像这样:
var html ='<div class="post"><' + 'script' + ' src="tophtml" type="text" ></'+'script'+'></div>';
如果需要用原生js动态的加载另外一个js文件,可以使用原生js的documentcreateElement方法创建script节点,然后更改该节点的type和src属性,最后通过appendChild方法将该节点动态添加到html中,这样就可以了,参考代码如下:
var new_element = documentcreateElement("script");//创建新的script节点new_elementsetAttribute("type", "text/javascript");new_elementsetAttribute("src", "/js/jqueryjs");documentbodyappendChild(new_element);//添加到body节点的末尾
上例中是在body的最末尾添加的,当然同样可以在head中添加引用该js的标签:documentheadappendChild(new_element);
下面的JS代码可以遍历指定表单中的所有元素,并输出元素的值:
<!DOCTYPE html>
<html>
<body>
<form id="frm1" action="form_actionaspx">
First name: <input type="text" name="fname" value="Donald"><br>
Last name: <input type="text" name="lname" value="Duck"><br>
<input type="submit" value="Submit">
</form>
<p>Return the value of each element in the form:</p>
<script>
var x=documentgetElementById("frm1");
for (var i=0;i<xlength;i++)
{
documentwrite(xelements[i]value);
documentwrite("<br>");
}
</script>
</body>
</html>
在head中引用jquery:
<script type="text/javascript" src="/js/jquery-171minjs"></script>
2定义一个text输入框:
<input type="text" value="" id="inputValue"/>
3在自定义函数中根据id获取此text的值:
var temp = $('#inputValue')val();//获取值
alert(temp);//显示
4将输入的 字符串根据 ","分割:
var temp = $('#inputValue')val();
var getStr = tempsplit(",");
5定义一个对象,并打印输入这个对象的值:
var jsonData = {};
jsonDataMainCmdID = 9100;//游戏消息 MDM_GF_GAME
jsonDataSubCmdID = 9012;//用户出牌SUB_C_OUT_CART_WEB
jsonDataChairID = 0;
jsonDataCardCount = getStrlength;
jsonDataCardData = temp;
var str = JSONstringify(jsonData);
alert(str);
输出 text中输入的值:
输出一个对象的值:
下面介绍三种异步执行加载Js 脚本的方法。
1、直接documentwrite
<script language="javascript">
documentwrite("<script src='testjs'><\/script>");
</script>
2、动态改变已有script的src 属性
<script src='' id="s1"></script>
<script language="javascript">
s1src="testjs"
</script>
3、动态创建 script元素
<script>
var oHead = documentgetElementsByTagName('HEAD')item(0);
var oScript= documentcreateElement("script");
oScripttype = "text/javascript";
oScriptsrc="testjs";
oHeadappendChild( oScript);
</script>
注 ,
这三种方法都是异步的,所以在采用这类方法动态加载Js 的同时,主界面的Js脚本是继续执行的,所以可能出现通过异步加载的Js代码得不到预期的效果的情况。这时候可以考虑采用Ajax加载Js的方法。
大概原理 :用XML>
以上就是关于script动态路径调用全部的内容,包括:script动态路径调用、如何用JS获取外部脚本的文件内容、js变量连接引入<script>文件问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)