- ベストアンサー
URL変更2
http://okwave.jp/qa5330543.html 上記の回答5で1つの入力で変更する事はできました。 2つの入力で違う箇所のURLを変えたいです。 X,Yのテキストボックスに入力されたものに、それぞれの初期値の 部分だけ変更させるにはどうしたら良いでしょうか? 1日調べていましたが、進展はありませんでした。 X [ ] 初期値sample8 Y [ ] 初期値test5 <a href="http://sample8.jp/fol/etc_a.html">a</A> <a href="http://test5.jp/fol/etc_b.html">b</A> <a href="http://sample8.jp/fol/etc_c.html">c</A> <a href="http://test5.jp/fol/sample8_d.html">d</A>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<html> <head> <script type="text/javascript"> var urlChanger = { keywords:{ 'sample8':'' , 'test5':'' }, source:'', set:function(elm,key) { var target = document.getElementById('target'); if (target) { if (!this.source) this.source = target.innerHTML; this.keywords[key] = elm.value; target.innerHTML = this.source; var k, i=-1, a = target.getElementsByTagName('A'); while (a[++i]) { for (k in this.keywords) { if (this.keywords[k]) a[i].href = a[i].href.replace(k, this.keywords[k]); }}}} } </script> </head> <body> <label>X: <input type="text" onmouseout="urlChanger.set(this,'sample8')"> </label><br> <label>Y: <input type="text" onmouseout="urlChanger.set(this,'test5')"> </label> <div id="target"> <a href="http://sample8.jp/fol/etc_a.html">a</A> <a href="http://test5.jp/fol/etc_b.html">b</A> <a href="http://sample8.jp/fol/etc_c.html">c</A> <a href="http://test5.jp/fol/sample8_d.html">d</A> </div> </body> </html>
その他の回答 (3)
- fujillin
- ベストアンサー率61% (1594/2576)
#1です。 う~~む。微妙な感じ・・・・ #2への補足の ><a href="http://sample8.jp/fol/sample8_d.html">d</a> >後のsample8はsample8のままで変更されませんでした。 の事象は#1の回答でも同様です。 replace()で単純に置換しているので、最初の1個しか置換されません。 (前々回の質問の最初の回答は、全部置換するようにしていたのだけれど、どうやらそうでもないような補足説明があったので…)(←イイワケ・・・) つぎはぎですが、全部を置換したいのであれば、先に var re = new RegExp(k,"g"); みたいにgフラグを指定しておいて、 replace(re, this.keywords[k]) で置換すれば全部置換されるようになります。 (ループの内外を逆にしないとばかばかしいかぁ…、いや、そもそも一番最初に定義しておくべきか…)
お礼
test5、sample8と1行に2箇所あった場合、「sample8」が変わらなかったのか 1つ目だけ変わって「2つ目」が変わらなかったのか、どちらか判断するために > 試しに、前後どちらもsample8にしてみました。 結果、1つ目の「sample8」は変わったので「2つ目が変わらない」という事が判明しました。 という事でして、対象はページ内全部ですが、同じ物が1行に2つ入る事はありません。 紛らわしくてすみませんでした。 全部を置換する方法まで記述して頂いてありがとうございます。
- yyr446
- ベストアンサー率65% (870/1330)
yyr446です。失礼しました。 確かに、変わってません。 test5とsample8が両方入っていたのですね。気づきませんでした。 no.1さんの解答で解決してよかったですね
お礼
言葉足らずですみませんでした。 4行目に変えたい場所が2箇所ありました。 試して頂きありがとうございます。
- yyr446
- ベストアンサー率65% (870/1330)
前(質問番号:5342674)の回答番号:No.2の方(yuu_x)の ソースそのままで、ご希望どうりに動いていますよ。 コピペミスじゃないですか?
お礼
追記です。 <a href="http://sample8.jp/fol/sample8_d.html">d</a> 試しに、前後どちらもsample8にしてみました。 ですが、前のsample8は変更されましたが、後のsample8はsample8のままで変更されませんでした。 http://の後しか変更されないようです。
補足
もう一度コピーし直して試しましたが、結果は同じでした。 4行目 <a href="http://test5.jp/fol/sample8_d.html">d</a> test5は変更されましたが、sample8は元のままでした。
お礼
前回の回答5で頂いた記述からどこかを変えるだけではなく、 キーワードを設定してurlChanger.set(this,'test5')となるのですね。 これで望む動作が出来ました。 ありがとうございました。