cognos网页制作函数-参数传递函数

这里分享一些我自己写的函数供大家参考,写的不好的还请指出,我及时改正.
在做网页与COGNOS联动的第一个问题就是参数传递的问题了,
1.首先我们可以刷新不同的URL去传递参数给报表,但是问题来了,如果我有不止一处需要与报表联动,也就是需要传递不止一个参数给报表应该怎么办呢?如何记忆上次传进来的参数呢?
之前我看到有人是这样做的,他在报表内部加入了文本提示框,然后把框的边框隐藏,当要刷新这个报表的时候,用var _team=form._textEditBox_team.value; 去提取内部文本提示值,然后把他当做参数再刷新.
这样做比较麻烦,首先你要把每个参数都要加入文本提示框,还要写程序去获取值.
2.这里讲讲我用的办法
如果第一个参数是用URL的方式传进去的话,那么我去获取当前的URL就能够获取上次传进去的参数了,
接下去,我们要解决的问题有两个:
1.如何,把新的参数加入之前的URL;
2.如果参数和上次的名字不同,只是值不同,那么如何替换之前的参数呢?

第一个问题好解决,只要把新的参数加在获取到的URL之后就行;
第二个问题就需要处理字符串了.
这里我说说我自己的处理方式;
1.获取URL字符串;
2.获取参数名之前的字符串;
3.获取字符串之后的字符串;
4.把前+参数+后,进行组合;

1.获取字符串函数:
function GetSRC(iframeId) {
var current_src
if ($(iframeId).length != 0) {/判断是否跨IFRAME/
current_src = $(iframeId).attr(“src”);
return current_src;

}
else {
    current_src = $(window.parent.document).find(iframeId).attr("src");
    return current_src;

}

}

2.字符串处理函数:
function ChangeSRC(s, parameName, parameVal) {/s传入的字符串,*parameName参数名,parameVal参数值/
var path1;
var path2;
var current_src = s;

var condition = "&p_" + parameName + "=" + parameVal;
/*需要改变的参数和值组合*/

var s_num = current_src.indexOf("&p_" + parameName + "=")

/*参数之前*/
var e_num;
/*参数之后*/
var indexArr = [];
path1 = current_src.substring(0, s_num)//得到参数之前的字符串

for (var i = 0, len = current_src.length; i < len; i++) {/*得到"&"的所有位置*/
    if (current_src[i] === "&") indexArr.push(i)
}
for (var i = 0; i < indexArr.length; i++) {/*获取参数所在位置的后一位*/
    if (indexArr[i] == s_num) {
        e_num = indexArr[i + 1];
    }

}

path2 = current_src.substring(e_num, current_src.length)//得到参数之后的字符串

//
// }
var next_src = path1 + condition + path2;
return next_src;

}

最后刷新

function RefreshSRC(src, iframeId) {/src:需要刷新的地址,iframeId:需要刷新的iframe/
if ($(iframeId).length != 0) {/判断是否跨IFRAME/
(iframeId).attr(“src”, src);  
    }  
    else {
(window.parent.document).find(iframeId).attr(“src”, src);
}

console.log("next_src=" + src)

}

把程序分的这么细,是因为,有可能会一次性传多个参数,然后刷新,所以就把各个功能模块细化了.

扫描二维码关注公众号,回复: 2647261 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_38610536/article/details/74062897