解決済みの質問
http://www.okweb.ne.jp/oshiete_new.php3
の質問のつづきです。
http://www.aaa.com/xxx[020-150].jpg
を
http://www.aaa.com/xxx020.jpg
http://www.aaa.com/xxx021.jpg
以下このようなものが、 http://www.aaa.com/xxx150.jpgになるまで
一覧表示される。
このようなスクリプトを教えてください。
forを用いてループさせるのは分かるのですが
どのように頭に”0”をつけて桁あわせすればよいかわからなくて。
http://www.okweb.ne.jp/oshiete_new.php3
を見ながら自分なりに考えているのですが、
[020-150]の020部分の桁数をしらべて。
その桁数-Iの桁数=頭につける0の数・・・・
Iは forの中のループに使用される数で・・・
えーっと、すいません、混乱してます。
ちなにみ桁をあわせない場合は次のようになります。
zzzzzzさん、大変お世話になりました。
正規表現の便利さを実感しました。
*************************************
<HTML>
<HEAD>
<TITLE>URLを展開</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- Hide script from old browser
function my1(str) {
if (str.match(/^(.*)\[(\d+)\-(\d+)\](.*)$/) != null) {
var win = window.open();
for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) {
win.document.write(RegExp.$1 + i + RegExp.$4 + "<BR>\n");
}
} else {
alert("式が展開可能ではありません。");
}
}
// end Hiding -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#D0D0D0">
<FORM NAME="form1">
<input type="text" name="text1"value="" size="60">
<input type="button" value="クリック"
onClick="my1(document.forms['form1'].text1.value) ">
</FORM>
</BODY>
</HTML>
*************************************
投稿日時 - 2002-04-14 08:33:12
数値を桁指定して文字列に変換する、という関数を作成すると良いと思います。
例えば、
function numberToString(num, fig) {
var tmparray = new Array(fig);
var str = num.toString(10);
for (var i=str.length; i<fig; i++) {
tmparray[i] = "0";
}
return (tmparray.join("")+str);
}
のようにします。
これはnumが正の数であることを前提にしていますが、今回は問題ありません。
その上で、RegExp.$2とRegExp.$3が同じ桁数かどうかによって処理を分ければ良いことになります。従って、
function my1(str) {
if (str.match(/^(.*)\[(\d+)\-(\d+)\](.*)$/) != null) {
var win = window.open();
if (RegExp.$2.length == RegExp.$3.length) {
var fig = RegExp.$2.length;
for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) {
win.document.write(RegExp.$1 + numberToString(i, fig) + RegExp.$4 + "<BR>\n");
}
} else {
for (var i=Number(RegExp.$2); i<=Number(RegExp.$3); i++) {
win.document.write(RegExp.$1 + i + RegExp.$4 + "<BR>\n");
}
}
} else {
alert("式が展開可能ではありません。");
}
}
とすればOKです。
投稿日時 - 2002-04-14 08:58:52
お礼
zzzzzz様
投稿してすぐ回答をいただきありがとうございました。
お答えを紙に書き出し今日一日読んでいました。
なるほど文字列にする方法がありましたね。それから関数を用いてリターンで返すという方法というのは、全く思いつきませんでした。 驚きの連続です。 ありがとうございました。
前回の質問は
http://www.okweb.ne.jp/kotaeru.php3?q=247951
でした。
投稿日時 - 2002-04-14 21:46:16
0人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク