![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
引数付きで呼び出す関数・配列・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で質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryでシンセサイザーを作っ...
-
二次元配列を使って順位をだす...
-
プログラミング 学習
-
Cookieに保存されない
-
API連携のプログラミングについ...
-
ジャバスクリプトについて。
-
オブジェクトから任意のプロパ...
-
スマホ上で、左右スワイプで次...
-
追加ボタンを押した際に ok ボ...
-
HTMLでサブフレームから親のス...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
-
Googleフォームで選択肢に応じ...
-
変数名をどのようにつけるのが...
-
ボタンを押したあとに画像を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
function の return 値を表示し...
-
SCRIPT5007: 未定義または NULL...
-
ボタンのID名を取得するには?
-
JavaScript でキーを送る
-
フォーカス移動抑止について
-
乱数を一定時間毎に表示させた...
-
ボタンを押してテキストエリア...
-
bodyタグのfocus
-
JavaScriptでのEnterキーとAlt+...
-
自動ジャンプでフォームデータ...
-
一定時間画像を表示させ、その...
-
リンク移動先のURLを取得
-
idHOGEで取得したinnerText(数...
-
「オブジェクトを指定してくだ...
-
html javascript 作った配列を...
-
キーを押している間の時間を計...
-
チェックボックスの選択パター...
-
Operaでのobjectタブの高さ変更
おすすめ情報