JS参数传递的实际应用
2009-09-12 23:44
218 查看
在项目中,有一个Ajax加载的区域,是一个Div标签,id为msg_box,这个控制链接包含在一个左侧的导航中,当从其他页面链接到这个页面时,该JS代码就失效了,原因很简单,在DOM中没有id为msg_box的div标签,该怎么解决这个问题呢?
方案:
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html";
}
}
</script>
但是该项目index.html存在四个相同性质的页面,都需要Ajax来刷新,这样就存在一个问题,当用户点击第三个栏目时,虽然可以回到index.html,但是无法刷新内容到第三个栏目。这时有两种解决方案:
方案1:
第一步:
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html?type="+index;
}
}
</script>
第二步:
改进showMenu函数
function showMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
......
}else{
url = window.location.href;
reg = /^(.*)//index/.html/?type/=/d$/gi;
if(reg.test(url)){
//如果符合传参数页面的url。则获取该参数
index = url.substr(url.length - 1);
......
}
}
}
方案2:
调用JS的cookie功能传递参数
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(){
index = getCookie("index");
if(index == null) index = 1;
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
setCookie("index", index);
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html";
}
}
</script>
方案:
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html";
}
}
</script>
但是该项目index.html存在四个相同性质的页面,都需要Ajax来刷新,这样就存在一个问题,当用户点击第三个栏目时,虽然可以回到index.html,但是无法刷新内容到第三个栏目。这时有两种解决方案:
方案1:
第一步:
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html?type="+index;
}
}
</script>
第二步:
改进showMenu函数
function showMenu(index){
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
......
}else{
url = window.location.href;
reg = /^(.*)//index/.html/?type/=/d$/gi;
if(reg.test(url)){
//如果符合传参数页面的url。则获取该参数
index = url.substr(url.length - 1);
......
}
}
}
方案2:
调用JS的cookie功能传递参数
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(){
index = getCookie("index");
if(index == null) index = 1;
if(typeof getElementById("msg_box") == "object"){
//如果存在msg_box对象 则刷新该页的对象
showMenu(index);
}else{
setCookie("index", index);
//如果不存在 则重定向到使用Ajax刷新的页面
window.location = "/index.html";
}
}
function setCookie(name, value){ var Then = new Date() Then.setTime(Then.getTime() + 1*3600000 ) //小时 document.cookie = name+"="+value+";expires="+Then.toGMTString(); } function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; }
</script>
相关文章推荐
- JS 参数传递的实际应用代码分析
- php中参数的传递,并在js中的应用
- JS控制静态页面之间传递参数获取参数并应用的简单实例
- js获取html参数及向swf传递参数应用介绍
- js获取html参数及向swf传递参数应用介绍
- js中每个函数中隐含的arguments对象,用语表示调用时实际传递的参数
- JS控制静态页面之间传递参数获取参数并应用
- JS控制静态页面之间传递参数获取参数并应用(window.location)
- JS控制静态页面之间传递参数获取参数并应用(window.location)
- JS控制静态页面传递参数并获取参数应用
- Asp.NET应用thickbox.js传递参数,后台请求不到的问题
- spirngmvc js传递复杂json参数到controller
- 静态页跨页面传递js参数
- Tips 1 通过JS动态传递Action的参数
- JS的参数传递
- js传递参数时类型错误
- js获取url传递参数
- js对象无法当成参数传递
- 责任链模式在网站参数传递、存取的应用