我正在尝试找到一种从iframe获取URL并使用JavaScript修改链接并移动到另一个页面的方法。基本上,iframe中的地址是" http://www.somthing.com/12/somt/arr_1.htm",使用JavaScript我想删除最后五个字符(留下此http://www。soming.com/12/somt/arr_"),比向其添加下一个逻辑号码(使链接" http://www.somthing.com/12/somt/arr_ar_2.htm")。
到目前为止,我有这样的东西。
<script language="javascript" type="text/javascript">
function urlGen(f){
var i1 = document.getElementById("iframe_id").contentWindow.location.href;
var i2 = "1.htm";
var i3 = "2.htm";
var newURL = i1 - i2 + i3
f.action = i1 - i2 + i3
return i1 - i2 + i3;
}
</script>
因此,根据我所说的内容,它应该看起来像这样吗?所以看起来像这样吗?(请记住,我是JavaScript的森林混蛋..."我不是一个聪明的人,但我知道Java是什么")
<script language="javascript" type="text/javascript">
function urlGen(f){
var i1 = document.getElementById("iframe_id").contentWindow.location.href = newURL;
newURL = il.slice(0, -5);
var i3 = "2.htm";
f.action = newURL + i3
}
</script>
尝试使用此正则表达式匹配
var i1 = "http://www.somthing.com/12/somt/arr_41.htm";
s = i1.replace(/d+.htm$/, function(attr) {
return attr.replace(/d+/, function(val) {
return parseInt(val,10) + 1;
});
});
alert(s);
这将更改与x.htm(其中x是数字)结尾的任何字符串,同一字符串代替X 1(从https://stackoverflow.com/a/a/1742841进行了改编)。<<<<<<<<<<<<<<<<<<<<<<<<<<
您正确地抓住了URL,但是您的字符串操纵无法正常工作。
您具有修剪字符串的特殊功能:
newUrl = i1.slice(0, -5);
这将修剪URL的最后5个字符。
newUrl = newUrl + i3;
这将与新的URL与新的URL限制。
return newUrl;
现在这样做:
document.getElementById("iframe_id").contentWindow.location.href = newUrl;
它将使用新的URL。
有工作示例:
此示例还包含了数字添加:
i1.substr(0,i1.lastIndexOf("_")+1);
此位使用字符串函数substr
。它用于检索字符串的一部分。第一个参数是开始位置,而第二个参数标记为末端。我使用字符串函数lastIndexOf
查找URL中最后使用的下划线的位置,然后添加一个函数以确保其包含下划线。上面的代码线将打印:
http://stacksnippets.net/arr_
要构建新的URL,我们现在需要该数字。parseInt
在这里为您提供帮助:
(parseInt(i1.substr(i1.lastIndexOf("_")+1), 10)+1)
我将整个零件放在括号之间,因此将其作为总和。parseInt
的第一个参数是包含数字(1.htm
)的字符串。我们通过使用substr
再次选择。现在,起始位置是下划线 1。省略了最后一个参数,因为我们可以直到字符串的末端。parseInt
将将1.htm
分解为1
。第二个参数用于迫使该函数使用小数系统。(radix 10)。总和的最后一部分将一个添加到数字中。该代码的结果将是2
。
将它们一起添加在一起将为我们提供:
http://stacksnippets.net/arr_2.htm
function urlGen(f) {
var i1 = "http://stacksnippets.net/arr_1.htm"; //cannot grab the url because of same origin policy
//var i1 = document.getElementById("iframe_id").contentWindow.location.href; //
var newURL = i1.substr(0,i1.lastIndexOf("_")+1) + (parseInt(i1.substr(i1.lastIndexOf("_")+1), 10)+1) + ".htm";
f.action = newURL;
return newURL;
}
//NOT PART OF THE SOLUTION:
document.body.onload = function() {
document.body.innerHTML += "Document initial url: http://stacksnippets.net/arr_1.htm";
var url = urlGen(new Object); //dummy object
document.body.innerHTML += "<br />Changed url: " + url;
}