2016-05-14 131 views
0

我对JavaScript非常陌生,但是我想创建一个脚本,只要点击一个按钮,就会将URL添加到数字中。 (如果可能的话,我还希望我的浏览器在每次执行该功能时都打开每个新创建的URL)。将脚本部分添加到URL的脚本

我认为这必须使用str.replace,我写了一些功能,但它不会工作,我不知道如何我的浏览器可以打开每次我运行该功能的新变量。

我在(在HTML文档中)所做的功能在下面,所以你知道如何编辑它来做我想做的事吗?如果需要,我可以提供更多信息。谢谢!

function { 
    var str = http://www.example.com/static/page/test/test.jhtml?channelID=11&seriesID=0&episodeNumber=001 
    var res = str.replace("(seriesID=)", "(seriesID=) + 1)"); 
} 
+0

你需要经过深入的基本面,因为你的代码是所有的地方:1)'function'需要一个名称和括号。 2)URL需要用引号括起来。 3)另外,请阅读'str,replace'的实际工作方式。 –

回答

0

该str似乎不是一个字符串。把''放在周围。该功能缺失()。

function name() { 
     var str = 'http://www.example.com/static/page/test/test.jhtmlchannelID=11&seriesID=0&episodeNumber=001'; 
     var res = str.replace("(seriesID=)", "(seriesID=) + 1)"); 
     console.log(res); 
} 

name(); 

使用替换不起作用。

1

function setSeriesID(url, id) { 
 
    // var pattern = /(seriesID\=\d)/g; 
 
    var pattern = /(seriesID\=\d+)/g; // edited 
 
    
 
    return url.replace(pattern, 'seriesID=' + id); 
 
} 
 

 
var new_url_1 = setSeriesID('http: //www.example.com/static/page/test/test.jhtml?channelID=11&seriesID=0&episodeNumber=001', 1); 
 

 
alert("new_url_1 : " + new_url_1); 
 

 
// otherwise if you want to change multiple url params then use this : 
 

 
function set_id(parameter, url, id) { 
 
    // var pattern = new RegExp("(" + parameter + "\\=\\d)", 'g'); 
 
    var pattern = new RegExp("(" + parameter + "\\=\\d+)", 'g'); // edited 
 
    return url.replace(pattern, parameter + '=' + id); 
 
} 
 

 
var new_url_2 = set_id('seriesID', 'http: //www.example.com/static/page/test/test.jhtml?channelID=11&seriesID=0&episodeNumber=001', 1); 
 

 
alert("new_url_2 : " + new_url_2);

+0

seriesID正确后的'+'是否?这不是指1个或更多个D字符吗? – PDN

+0

@PDN。感谢我只是一个错误:) – DININDU

+0

其实我只是建议你添加它:\ d +,因为他们大多数流行系列有超过10集。 –

0

三个问题你的函数。

首先,str实际上并不是一个字符串,因此需要引号才能使它成为有效的字符串。

var str = "http://www.example.com/static/page/test/test.jhtml?"channelID=11&seriesID=0&episodeNumber=001 

其次,replace()会用别的东西替换一个子字符串。在这种情况下,它正在搜索不存在的文字字符串"(seriesID=)"。摆脱括号:"seriesID="

最后,当您将一个数字添加到字符串时,javascript会将该数字转换为一个字符串并返回一个字符串。因此,单击按钮后,结果将始终为"seriesID=1"。为了解决这个问题,解析出数字并将其转换为一个数字,使用​​,您可以在另一个var number中存储该数字,只要单击该按钮就可以添加1。最后,你会打电话更换:

str.replace('seriesID=', 'seriesID=' + number); 
0

可能看起来有点复杂,但这会做到你所需要的。

var str = 'http://www.example.com/static/page/test/test.jhtml?channelID=11&seriesID=0&episodeNumber=001'; 
 

 
function myFun() { 
 
    
 
    var n = str.indexOf("seriesID"); 
 
    var m = str.indexOf("&",n); 
 
    var y = str.substring(n, m); 
 
    var z = y.split('='); 
 
    
 
    str = str.replace(y, z[0] + '=' + (parseInt(z[1]) + 1)); 
 
    
 
    var win = window.open(str, '_blank'); 
 

 
    console.log(str); 
 
    
 
    if(win){ 
 
    //Browser has allowed it to be opened 
 
    win.focus(); 
 
    } else{ 
 
    //Broswer has blocked it 
 
    alert('Please allow popups for this site'); 
 
    } 
 
}
<button onclick='myFun()'>Click me</button>