引数付きで呼び出す関数・配列・name(id)のつけ方・・・?
何を質問したいのかわからないタイトルになってしまいましたが
とりあえず下のソースコードを見てください(実行してください)。
<html>
<head><title>up</title>
<script language="JavaScript">
<!--
num=new Array("5","5");
str=new Array("*****","*****");
function up(j)
{
num[j]++;
str[j]+="*";
text[j].innerHTML=num[j]+str[j];
}
//-->
</script>
</head>
<body>
<input type="button" value="1" onClick="up(0)"><div id="text1">5*****</div><br>
<input type="button" value="2" onClick="up(1)"><div id="text2">5*****</div>
</body>
</html>
1のボタンを押すと上の文字列が反応し、2のボタンを押すと
下の文字列が反応するプログラムを書きたいのですが、どっちの
ボタンを押して関数が呼び出され、どっちの文字列に処理を
するか区別することができません、どうしたらよいのでしょうか?
下のようにひとつの時はできました・・・。でもふたつの時は
どうしたらいいのかわかりません。
<html>
<head><title>up</title>
<script language="JavaScript">
<!--
num=5;
str="*****";
function up()
{
num++;
str+="*";
text1.innerHTML=num+str;
}
//-->
</script>
</head>
<body>
<input type="button" value="1" onClick="up()"><div id="text1">5*****</div>
</body>
</html>
No.5ベストアンサー
- 回答日時:
wolfwoodさんと同じです。
text[j] が text1 っていうidとして認識されていないから、
text1 という文字列を eval() でidとして認識させます。
具体的には
text[j].innerHTML=num[j]+str[j];
を
eval("text"+(j+1)).innerHTML=num[j]+str[j];
にします。
No.6
- 回答日時:
こうするのは駄目なの?
<html>
<head><title>up</title>
<script language="JavaScript">
<!--
num=new Array("5","5");
str=new Array("*****","*****");
function up(j)
{
var txt = document.all("text"); ---1
num[j]++;
str[j]+="*";
txt[j].innerHTML=num[j]+str[j]; ---2
}
//-->
</script>
</head>
<body>
<input type="button" value="1" onClick="up(0)"><div id="text">5*****</div><br> ---3
<input type="button" value="2" onClick="up(1)"><div id="text">5*****</div> ---4
</body>
</html>
1を追加
2の所を、text[j]からtxt[j]へ
3の所を、text1からtext
4の所を、text2からtext
以上
No.4
- 回答日時:
まず、up() 内でDIVオブジェクトを識別できるように、DIVのIDを引数で渡しましょう。
IDからオブジェクトの逆引きは、document.all(id) でできます。
※IE以外ではそれ以外の処理が必要になります。
またDIV内の表示内容を配列で保存していますが、常時 innerText プロパティで参照可能なので、この値を数値と文字列に分解し、処理を施した後、また戻してやればよいでしょう。
で、改良するとこんな感じ。
<html>
<head><title>up</title>
<script language="JavaScript"><!--
function up(divId) {
var div = document.all(divId); // IDからオブジェクトを逆引き
div.innerText.match(/^(\d+)(.*)$/); // matchを利用して、数値と文字列を取り出す
var num = RegExp.$1 - 0 + 1; // - 0 で数値化し、1 を足す
var str = RegExp.$2 + '*'; // * を増やす
div.innerText = num + str; // innerText に戻す
}
//--></script>
</head>
<body>
<!-- up() の引数に、対象のDIVオブジェクトIDを渡す -->
<input type="button" value="1" onClick="up('text1')"><div id="text1">5*****</div><br>
<input type="button" value="2" onClick="up('text2')"><div id="text2">5*****</div>
</body>
</html>
※IE5.5確認済み
※全角スペースを入れているので、半角スペースかタブに変換してください。
No.3
- 回答日時:
""+(数値)で、数値を文字列にかえることができるので、
こんなふうに書けると思います。
num=new Array(5,5);
str=new Array("*****","*****");
function up(j){
num[j]++;
str[j] += "*";
tmp = "text" + ""+(j+1);
tmp.innerHTML = ""+num[j] + str[j];
私ならこうする、くらいですけど。
No.2
- 回答日時:
eval関数でidのnameを生成すれば良いと思います。
例)
function up(j)
{
num[j]++;
str[j]+="*";
var hoge = eval("text"+(j+1));
hoge.innerHTML=num[j]+str[j];
}
No.1
- 回答日時:
<div id="text1">、<div id="text2">は配列ではないのでswitch文で切り分けます。
switch(j){
case 0:
text1.innerHTML=num[j]+str[j];
break;
case 1:
text2.innerHTML=num[j]+str[j];
break;
}
(idを両方ともtextにしてしまう方法でも実行はできてしまいますが…)
この回答への補足
ありがとうございます。switch文を使うのもよいのですが、switch文以外の方法はありませんか?この場合、caseも2通りでそれぞれの処理も短いので問題ないのですが、もしcaseが増え処理も長くなった場合、大変なことになります。textにも配列を作り関数内でtext[j]のような形で使いたいのですが・・・
補足日時:2002/06/28 09:32お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iframeの中から親ページをスム...
-
フォーカス移動抑止について
-
JavaScriptでiframeの内容を「...
-
ひとつのHTMLファイル内にcanva...
-
ボタンのID名を取得するには?
-
function の return 値を表示し...
-
チェックボックスの選択パター...
-
何度もリピートする、カウント...
-
HTMLのテキストノード部分を変...
-
JavaScriptによるページURLの取...
-
マウスオーバーで文字にアンダ...
-
6で割り切れる数を表示するJava...
-
数日前等の日付を表示したいの...
-
<a href="#" …>の意味を教えて...
-
javascriptとApacheの設定
-
html メールリンクにて自動ファ...
-
javascriptでalertの文字列をコ...
-
bodyにidをつける理由は何ですか?
-
JavascriptとJqueryを混在し記述
-
HTML文でiframe srcで参照表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
function の return 値を表示し...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでiframeの内容を「...
-
getElementsByNameで要素が取得...
-
キーを押している間の時間を計...
-
フォーカス移動抑止について
-
JavaScriptでの西暦下2桁での表...
-
自動ジャンプでフォームデータ...
-
出荷予定日を表示するJavaスク...
-
クリックすると別の文章を表示する
-
リンク移動先のURLを取得
-
乱数を一定時間毎に表示させた...
-
JavaScript でキーを送る
-
idHOGEで取得したinnerText(数...
-
ボタンのID名を取得するには?
-
htaでVBSのソースを書いたらエ...
-
Javascriptの出力結果をhtmlボ...
-
bodyタグのfocus
-
AjaxでDBから取得したデータを...
-
JavaScriptでのEnterキーとAlt+...
おすすめ情報