以下のソースにて?の部分を配列番号と同等にしたいのですが、うまくいきません。
やりたいことは配列のEbox_Div[0]~[3]の中にnullが入った場合その配列番号に対応するテキストボックスのEmail0~3には"空"と代入したいのです。
※hiddenタグのEmail_hの値はTBLの状態によって異なります。
<script language="javascript">
function bunkatsu(){
var Ebox_Div = new Array();
Ebox_Div = document.myform.Email_h.value.split(",");
document.myform.Email0.value = Ebox_Div[0];
document.myform.Email1.value = Ebox_Div[1];
document.myform.Email2.value = Ebox_Div[2];
document.myform.Email3.value = Ebox_Div[3];
for (i=0; i<4; i++){
if(Ebox_Div[i] == null){
document.myform.Email?.value = "空";
}
}
}
</script>
<body bgcolor="white" onLoad="bunkatsu()">
<form name="myform">
<input type="hidden" name="Email_h" value="aho,baka">
<table border="0" width="100%">
<tr><td width="10%">アドレス1</td><td width="90%"><input type="text" name="Email0" size="60"></td></tr>
<tr><td width="10%">アドレス2</td><td width="90%"><input type="text" name="Email1" size="60"></td></tr>
<tr><td width="10%">アドレス3</td><td width="90%"><input type="text" name="Email2" size="60"></td></tr>
<tr><td width="10%">アドレス4</td><td width="90%"><input type="text" name="Email3" size="60"></td></tr>
</table>
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
document.myform.Email?.value = "空";
の部分をオブジェクトとして参照しなければいけないので、
var textName; //適当
と宣言して、
textName = "Email" + i; //文字列でもつ
そして、呼び出すときに、document.myform.all(textName).value = "空";とすると、うまくいくと思います。やり方はいろいろありますが。。。。
訂正したソース↓
<script language="javascript">
function bunkatsu(){
var Ebox_Div = new Array();
var textName;
Ebox_Div = document.myform.Email_h.value.split(",");
document.myform.Email0.value = Ebox_Div[0];
document.myform.Email1.value = Ebox_Div[1];
document.myform.Email2.value = Ebox_Div[2];
document.myform.Email3.value = Ebox_Div[3];
for (i=0; i<4; i++){
if(Ebox_Div[i] == undefined){
textName = "Email" + i;
document.myform.all(textName).value = "空";
}
}
}
</script>
<body bgcolor="white" onLoad="bunkatsu()">
<form name="myform">
<input type="hidden" name="Email_h" value="aho,baka">
<input type="button" value='test' onclick=bunkatsu();>
<table border="0" width="100%">
<tr><td width="10%">アドレス1</td><td width="90%"><input type="text" name="Email0" size="60"></td></tr>
<tr><td width="10%">アドレス2</td><td width="90%"><input type="text" name="Email1" size="60"></td></tr>
<tr><td width="10%">アドレス3</td><td width="90%"><input type="text" name="Email2" size="60"></td></tr>
<tr><td width="10%">アドレス4</td><td width="90%"><input type="text" name="Email3" size="60"></td></tr>
</table>
No.5
- 回答日時:
Ebox_Divを宣言をする場合splitで返される配列を代入するときにするべきです(この場合new Array()と配列にしておくのは意味がありません)。
function bunkatsu(){
var i, Ebox_Div = document.myform.Email_h.value.split(",");
for (i = 0; i < 4; i++) {
document.myform.elements["Email" + i].value = Ebox_Div[i] || "空";
}
}
No.4
- 回答日時:
1.#1の方の方法です。
これが最も汎用性が高い方法だと思います。(NN4でも動く)function bunkatsu(){
Ebox_Div = document.myform.Email_h.value.split(",");
for (i=0; i<4; i++) {
if (Ebox_Div[i]) document.myform.elements["Email"+i].value = Ebox_Div[i];
else document.myform.elements["Email"+i].value = "空";
}
}
2.DOMでやってみました。
function bunkatsu(){
Ebox_Div = document.myform.Email_h.value.split(",");
for (i=0; i<4; i++) {
if (Ebox_Div[i]) document.getElementsByName("Email"+i)[0].value = Ebox_Div[i];
else document.getElementsByName("Email"+i)[0].value = "空";
}
}
蛇足:splitによってできる配列は、宣言しなくてもOKです。
No.2
- 回答日時:
jsの部分だけです。
<script language="javascript">
<!--
function bunkatsu(){
var Ebox_Div = new Array(4);
Ebox_Div = document.myform.Email_h.value.split(",");
var intkey = Ebox_Div.length;
for(i = 3; i >= intkey;i--){
Ebox_Div[i]='空';
}
document.myform.Email0.value = Ebox_Div[0];
document.myform.Email1.value = Ebox_Div[1];
document.myform.Email2.value = Ebox_Div[2];
document.myform.Email3.value = Ebox_Div[3];
}
-->
</script>
No.1
- 回答日時:
document.myform.Email?.value = "空";
以下のように変えればOKかと思います。
document.myform.elements["Email" + i].value = "空";
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP ($_POST['email']??"", ・・・の ??"" の""の意味ですが 2 2022/07/30 06:38
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力チェックの外部スクリプト...
-
ラジオボタンが選択されたらテ...
-
JavaScriptの「.querySelectorA...
-
localStorageでのcheckbox制御
-
formで項目を連結したい
-
Javascriptの電卓で最初の何も...
-
JavaScriptで、コピーボタンを...
-
動的に生成されるラジオボタン...
-
正規表現で複数マッチ条件で悩...
-
<JavaScript>tableタグを入力不...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
slickのレスポンシブ > center...
-
hiddenのvalueの値を変えたい
-
ツリービューのチェックボック...
-
ハイパーリンクを別ウインドウ...
-
特定<table>内の<td>の色を変える
-
全てのselect要素をデフォルト...
-
javascript作成してます。ラジ...
-
onchangeイベントを強制的に発...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
画面表示とともにtableの指定の...
-
JavaScriptの「.querySelectorA...
-
Javascriptの電卓で最初の何も...
-
localStorageでのcheckbox制御
-
文字数を数える際に空白、改行...
-
テーブル内のチェックボックス...
-
クリックしたラジオボタンの行...
-
複数のselect値で1つも選択され...
-
jQueryで合計を出したい
-
送信ボタン連打を抑止したいです
-
ラジオボタンが選択されたらテ...
-
ラジオボタンを一括で操作する...
-
formで項目を連結したい
-
javascriptで表(テーブル)の自...
-
同一nameの input type="text"...
-
動的に生成されるラジオボタン...
-
ボタンクリックでフォーカス移動
-
JavaScriptによる自動計算フォーム
-
選択したテーブルのセルの背景...
おすすめ情報