
任意の数字を入力するだけでその数だけ連番のリンクを作りたいのですが方法がわかりません。自動で連番のURLを生成することは出来ました。しかし、リンクを張ることが出来ず、現在の方法ではいつまでたっても解決しないような気がしています。指定した任意の数だけ自動的に連番URLを生成し、さらにリンクを張り表示する方法はないでしょうか?
具体的には「3」という数字を指定することで
<a href="http:***.com/01.html">01</a>
<a href="http:***.com/02.html">02</a>
<a href="http:***.com/02.html">02</a>
といったリンクを自動で作りたいと思っております。
・http:***.com/という部分は自動ではなく事前に指定します。
現在の状態
<head>
<script language="JavaScript" type="text/javascript">
function $(x){
return document.getElementById(x);
}
function numbering(){
var base = $("base").value;
var begin = parseInt($("begin").value);
var end = parseInt($("end").value);
var zerosup = $("zero").checked;
var result = $("result");
result.innerHTML = "";
if(begin > end){
alert("Too large begin number!");
return;
}
var zerosupsize = 0;
if(!zerosup){
zerosupsize = ("" + end).length;
}
var r = "";
for(var i=begin; i<=end; i++){
var num;
if(!zerosup){
num = fill_left(String(i), "0", zerosupsize)
}else{
num = String(i);
}
r += base.replace(/\$/gm, num) + "\n";
}
result.innerHTML = r;
}
function fill_left(s, x, size){
var n = size - s.length;
if(n > 0){
s = repeat(x, n) + s;
}
return s;
}
function repeat(x,size){
var s = "";
for(var i=0; i<size; i++){
s += x;
}
return s;
}
</script>
</head>
<body>
<form id="numbering">
base($の部分を数字に置換) : <input id="base" type="radio" size="100" value="http://www.****.com/$.html"></input><br />
zero suppress : <input id="zero" type="checkbox" checked></input><br />
begin : <input id="begin" type="text" value="1" size="10"></input><br />
end : <input id="end" type="text" value="20" size="10"></input><br />
<input id="create" type="button" value="numbering!" onclick="numbering()"></input><br />
</form>
<textarea id="result" cols="80" rows="10"></textarea>
</body>
どうかよろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
・ラジオボタンをクリックしただけで結果を表示できないでしょうか?
tags[i].onclick=function(){var radio=this.form[this.name];for(var i=0;i<radio.length;i++) if(radio[i].checked) radio.value=radio[i].value;}
の行を以下に変更してください。
tags[i].onclick=function(){var radio=this.form[this.name];for(var i=0;i<radio.length;i++) if(radio[i].checked) radio.value=radio[i].value;numbering(this.form)}
ようはクリックしたときにnumbering()を呼べばいいので
・リンク内の文字表示なのですが、リンクの連番と同じナンバーにする方法はありますか?
え~・・・これはソースみてわからないかなぁ・・・?
a.appendChild(document.createTextNode(i))
ではなく
a.appendChild(document.createTextNode(num))
でいけるはず。
No.4
- 回答日時:
こんな風にするとradioのvalueがとれます
<head>
<script language="JavaScript" type="text/javascript">
window.onload=function(){
getRadioValue();
}
function getRadioValue(){
var tags=document.getElementsByTagName("input");
for(var i=0;i<tags.length;i++)
if(tags[i].type=="radio"){
tags[i].onclick=function(){var radio=this.form[this.name];for(var i=0;i<radio.length;i++) if(radio[i].checked) radio.value=radio[i].value;}
tags[i].onclick();
}
}
function numbering(f){
var base = f.base.value;
var begin = parseInt(document.getElementById("begin").value);
var end = parseInt(document.getElementById("end").value);
var zerosup = document.getElementById("zero").checked;
var result = document.getElementById("result");
while ( result.hasChildNodes() ) result.removeChild(result.firstChild);
for(var i=begin; i<=end; i++){
var num=zerosup?i.toString():(100+i).toString().match(/\d{2}$/);
var url=base.replace(/\$/,num);
var a=document.createElement("a");
a.setAttribute("href",url)
a.appendChild(document.createTextNode(url))
result.appendChild(a)
result.appendChild(document.createElement("br"))
}
}
</script>
</head>
<body>
<form id="numbering">
base : <input name="base" type="radio" value="http://www.hoge1.com/$.html" checked />hoge1
<input name="base" type="radio" value="http://www.hoge2.com/$.html" />hoge2
<input name="base" type="radio" value="http://www.hoge3.com/$.html" />hoge3<br />
zero suppress : <input id="zero" type="checkbox" checked /><br />
begin : <input id="begin" type="text" value="1" size="10" /><br />
end : <input id="end" type="text" value="20" size="10" /><br />
<input id="create" type="button" value="numbering!" onclick="numbering(this.form)" /><br />
</form>
<div id="result"></div>
</body>
ありがとうございます!希望通り選択して表示することが出来ました。
度々申し訳ありませんが、あと少しお聞きしたいことがございます。
・ラジオボタンをクリックしただけで結果を表示できないでしょうか?
・リンク内の文字表示なのですが、リンクの連番と同じナンバーにする方法はありますか?
var a=document.createElement("a");
a.setAttribute("href",url)
a.appendChild(document.createTextNode(i))
result.appendChild(a)
この状態では一つ目のリンクの連番部分が「01」という表示でも「1」とゼロ抜きの表示となってしまいます・・・
No.3
- 回答日時:
こんにちは
一応こういう形でもできますが・・・
<script type="text/javascript"><!--
function numbering() {
base = document.getElementById("base").value;
begin = eval(document.getElementById("begin").value);
end = eval(document.getElementById("end").value);
zero = document.getElementById("zero").checked;
res = document.getElementById("result");
res.innerHTML = "";
if(begin > end) { alert("始点と終点が変です"); return false; }
for(i=begin;i<=end;i++) {
if(i<10 && zero == true){ i= "0"+i; }
url = base.replace(/\$/,i);
res.innerHTML += "<a href='" + url + "'>" + i + "<\/a><br>";
}
}
//--></script>
<form id="numbering">
base : <input id="base" name="baseurl" type="radio" size="100" value="http://www.****.com/$.html" /><br />
zero suppress : <input id="zero" type="checkbox" checked /><br />
begin : <input id="begin" type="text" value="1" size="10" /><br />
end : <input id="end" type="text" value="20" size="10" /><br />
<input id="create" type="button" value="numbering!" onclick="numbering()" /><br />
</form>
<div id="result"></div>
#2様も触れているようにbaseとなるURLをradioで選択するのであればスクリプト内1行目 base=・・・を変更する必要があります
ありがとうございます!URLをリンクする事には成功いたしました。
ご指摘のとおりbaseのURLをradioで選択したいのですが、具体的にbase=・・・をどのようにすればよいのでしょうか?
No.2
- 回答日時:
とりあえずこんな感じで
<head>
<script language="JavaScript" type="text/javascript">
function numbering(){
var base = document.getElementById("base").value;
var begin = parseInt(document.getElementById("begin").value);
var end = parseInt(document.getElementById("end").value);
var zerosup = document.getElementById("zero").checked;
var result = document.getElementById("result");
while ( result.hasChildNodes() ) result.removeChild(result.firstChild);
for(var i=begin; i<=end; i++){
var num=zerosup?i.toString():(100+i).toString().match(/\d{2}$/);
var url=base.replace(/\$/,num);
var a=document.createElement("a");
a.setAttribute("href",url)
a.appendChild(document.createTextNode(url))
result.appendChild(a)
result.appendChild(document.createElement("br"))
}
}
</script>
</head>
<body>
<form id="numbering">
base : <input id="base" type="radio" size="100" value="http://www.****.com/$.html" /><br />
zero suppress : <input id="zero" type="checkbox" checked /><br />
begin : <input id="begin" type="text" value="1" size="10" /><br />
end : <input id="end" type="text" value="20" size="10" /><br />
<input id="create" type="button" value="numbering!" onclick="numbering()" /><br />
</form>
<div id="result"></div>
</body>
ラジオボタンbaseのvalueを取るあたりは、方式を変えたほうがよいと
思いますよ・・・(おそらく選択してやりたいのでしょうから
いまのままではいきづまります)
具体的な方法ありがとうございます!
ご察しのとおり、ラジオボタンで複数の選択肢をつくってURLの選択をしたいと思っております。さらにご指摘のとおりいきづまっています。。
No.1
- 回答日時:
なるべくいじらずに済ませるなら
r += base.replace(/\$/gm, num) + "\n";
を
r += '<a href="' + base.replace(/\$/gm, num) + '">' + num + '</a><br>'
<textarea id="result" cols="80" rows="10"></textarea>
を
<div id="result"></div>
で、質問の意図にそってますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
自動的に連番生成したURLにリン...
-
どのボタンがクリックされたの...
-
C言語クイックソートの比較総回...
-
UART通信の取説で,left floati...
-
javascriptにてHTMLのhiddenエ...
-
チェックボックスがundefinedと...
-
ホームページビルダーのスクリ...
-
プルダウン選択時、既に入力済...
-
チェックボックスのvalueをテキ...
-
JavaScriptによる自動計算フォ...
-
name属性が同じフォームが複数...
-
VB.NET DateTimeの型について
-
javascriptでhiddenに二次元配...
-
複数行を独立してテキストエリ...
-
複数のsubmitボタンで押された...
-
jQueryで合計を出したい
-
onchangeイベントを強制的に発...
-
selectのonChangeが動作しません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
value内に変数を入れたい
-
hiddenのvalueの値を変えたい
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
javascriptでhiddenに二次元配...
-
JavaScriptによる自動計算フォ...
-
どのボタンがクリックされたの...
-
フォーカスすると初期値が消去...
-
javascriptにてHTMLのhiddenエ...
-
Jqueryを使って値の合計を簡単...
-
name属性が同じフォームが複数...
-
setIntervalの間隔を途中で変更...
-
eval()を使わずに数値を取得し...
-
チェックボックスのvalueをテキ...
-
ラジオボタンと連動して文字列...
-
Pythonで会員サイトの自動ログ...
-
親ページのフォーム入力データ...
-
selectboxのoptionタグのvalue...
-
テキストエリア内容からチェッ...
-
チェックボックスがundefinedと...
おすすめ情報