2016-05-14 16 views
0

私はJavaScriptの新機能ですが、ボタンをクリックするたびにURLの数字に1を加えるスクリプトを作りたいと思います。 (もし可能であれば、機能が実行されるたびにブラウザが新しく作成されたURLを開くようにしたい)。URLの一部に1を追加するスクリプト

これは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

シリーズIDの後の '+'は正しいですか? 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 

第2に、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>

関連する問題