A JavaScript Fancier
伟大的javascript技术研究中...
IT博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
公告
本blog为作者本人学习JS脚本所用,未经特别声明,本站所有文章均属作者本人原创,请转载时注明来源!谢谢合作!同时希望与各位javascript爱好者交流学习。MSN:yanwei8410@hotmail.com
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(26)
给我留言
查看公开留言
查看私人留言
随笔分类
__非技术文章__(24)
(rss)
DHTML相关技术(2)
(rss)
HTML/XHTML/CSS(37)
(rss)
javascript个人作品(37)
(rss)
javascript代码收藏(22)
(rss)
javascript代码研究(18)
(rss)
javascript技巧总结(72)
(rss)
javascript语法基础(20)
(rss)
Js框架组件(33)
(rss)
Web2.0相关内容(11)
(rss)
Web开发相关知识(28)
(rss)
其它技术文章(3)
(rss)
动态网页编程技术(4)
(rss)
正则表达式专题(10)
(rss)
随笔档案
2008年7月 (7)
2008年6月 (14)
2008年5月 (15)
2008年4月 (4)
2008年3月 (5)
2008年1月 (7)
2007年12月 (10)
2007年11月 (22)
2007年10月 (27)
2007年9月 (16)
2007年8月 (1)
2007年7月 (8)
2007年6月 (5)
2007年5月 (12)
2007年4月 (16)
2007年3月 (3)
2007年2月 (5)
2007年1月 (22)
2006年12月 (11)
2006年11月 (4)
2006年10月 (2)
2006年9月 (6)
2006年8月 (4)
2006年7月 (17)
2006年6月 (61)
Ajax技术站点
AJAX Matters
Ajaxian(国外)
AjaxPatterns Wiki
AJAX中国
Ajax中国-李琨老师的blog
笑笑设计(Ajax高人Blog)
javascript学习站点
javascript论坛
JSVM官方站点
无忧脚本
正则表达式库
JS高人Blog
LlinZzi's Blog
宝玉的blog
西林@生存
Ruby&&Ajax框架
Ajax效果框架
Bindows官方站
JSLinb(Ajax框架)
RubyonRail
rubyonrails
Ruby官方站
类C++的js框架
Web技术站点
CoolCode.CN
HTML5时代
专注于html5/css3及mobile开发的博客
IECN社区
Ugia.Cn
WEB2.0技术博客
(rss)
Web服务_TechTarget
蓝色理想
搜索
积分与排名
积分 - 879166
排名 - 2
最新评论
1. re: 利用arguments.callee实现匿名函数的递归
http://uedbet-getafe.weebly.com
--匿名函数
2. re: 解决Ext2.0中ComboBox执行Filter第一次无效的问题
评论内容较长,点击标题查看
--学习着
3. re: 有关window.undefined=window.undefined写法的理解(Ext2学习总结)
1
--1
4. re: EXT Ajax访问url返回405错误的解决办法
果然是requestMethod:'GET' 的问题。哈哈
--倔强的土豆
5. re: CSS中table-layout属性的作用及使用详解
vnbg
--左支座
阅读排行榜
1. document.getElementById()方法简写【js技巧】(58678)
2. 推荐一个IE下的优秀js调试工具(Companion.JS)(42450)
3. 关于JavaScript中apply与call的用法意义及区别(41831)
4. 转换字符串为json对象的方法 (19260)
5. JS中的instanceof和typeof (19110)
评论排行榜
1. XHTML1.0学习总结(30)
2. 关于JavaScript中apply与call的用法意义及区别(28)
3. [推荐]收藏的国内外网站设计资源【摘自http://adobeplus.blog.sohu.com】(26)
4. 一个正则实现文本框中只能输入数字和小数点(20)
5. Mastering JavaScript — concept and resource guide(20)
JS文件传参及处理技巧
其实为js文件传参是很久就接触过的一个问题,只是一直没有放在心上,今天在无忧看到又有人问这个问题,今日总结一下。
解决思路:
1、首先获取到当前JS文件的SRC属性,这里有一个小技巧:我们只需要获取当前页面最后一个script标记内容即可。
为什么??
因为JS是顺序解析的,当前JS脚本解析时后面的js都还没有解析到,当然就认为自己就是最后一个script了。
此外,这样获取还有一个好处:
我们可以多次引用同一个文件且传入不同的参数,这样可以在js文件中根据参数不同做不同处理,很巧妙把!简直就是动态语言了。
代码如下:
var
scripts
=
document.getElementsByTagName(
"
script
"
);
var
curJS
=
scripts[scripts.length
-
1
];
//
curJS就是我们当前的js文件
得到这个就好办了,通过curJS.src即可获取到完整的路径内容(包括参数)。
2、下面的就是解析参数内容了,解析的过程相当简单,相信很多人都容易完成这一步。
但我们要对一个特殊情况进行处理:
如果一个参数被传入了多次,则要将该参数值转换为数组存储每一个传入的值。
演示地址:
http://www.ajaxbbs.net/test/getArgs/
完整测试脚本如下:
var
getArgs
=
(
function
(){
var
sc
=
document.getElementsByTagName('script');
var
paramsArr
=
sc[sc.length
-
1
].src.split('
?
')[
1
].split('
&
');
var
args
=
{},argsStr
=
[],param,t,name,value;
for
(
var
i
=
0
,len
=
paramsArr.length;i
<
len;i
++
){
param
=
paramsArr[i].split('
=
');
name
=
param[
0
],value
=
param[
1
];
if
(
typeof
args[name]
==
"
undefined
"
){
//
参数尚不存在
args[name]
=
value;
}
else
if
(
typeof
args[name]
==
"
string
"
){
//
参数已经存在则保存为数组
args[name]
=
[args[name]]
args[name].push(value);
}
else
{
//
已经是数组的
args[name].push(value);
}
}
/*
在实际应用中下面的showArg和args.toString可以删掉,这里只是为了测试函数getArgs返回的内容
*/
var
showArg
=
function
(x){
//
转换不同数据的显示方式
if
(
typeof
(x)
==
"
string
"
&&!/
\d
+/
.test(x))
return
"
'
"
+
x
+
"
'
"
;
//
字符串
if
(x
instanceof
Array)
return
"
[
"
+
x
+
"
]
"
//
数组
return
x;
//
数字
}
//
组装成json格式
args.toString
=
function
(){
for
(
var
i
in
args) argsStr.push(i
+
':'
+
showArg(args[i]));
return
'{'
+
argsStr.join(',')
+
'}';
}
return
function
(){
return
args;}
//
以json格式返回获取的所有参数
})();
alert(getArgs());
alert(
"
username:
"
+
getArgs()[
"
username
"
]);
测试示例的HTML源码:
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
>
<
title
>
new document
</
title
>
<
meta
name
="generator"
content
="editplus"
/>
<
meta
name
="author"
content
=""
/>
<
meta
name
="keywords"
content
=""
/>
<
meta
name
="description"
content
=""
/>
<
script
type
="text/javascript"
src
="test.js?id=4&username=yemoo&id=1&uid=110"
></
script
>
<
script
type
="text/javascript"
src
="test.js?id=5&username=ajaxbbs&id=7&uid=253"
></
script
>
<
script
type
="text/javascript"
src
="test.js?id=6&username=jack&id=8&uid=258"
></
script
>
</
head
>
<
body
>
</
body
>
</
html
>
posted on 2008-03-11 19:18
Yemoo'S JS Blog
阅读(2863)
评论(1)
编辑
收藏
引用
所属分类:
javascript技巧总结
评论
#
re: JS文件传参及处理技巧
2010-12-15 16:33
yun
想吐啊
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
Powered by:
IT博客
Copyright © Yemoo'S JS Blog