前提・実現したいこと
プログラミング歴一週間です。
HTMLでテーブルの名前をクリックした際
「選択したユーザ:」というテキストボックスに名前を表示させるようにしたい。
更に、別なユーザをクリックすれば前に選択されていた名前は消えて新しいユーザの名前が出るようにしたい。
またそのあとに選択されたユーザに応じて"nintendo+idの数字"というパスワードでログイン(ソースコードからバレてしまってもいい)
できるようにしたい。
発生している問題・エラーメッセージ
mario_bros.js:26 Uncaught TypeError: Cannot set property 'value' of undefined at myfunc2 (mario_bros.js:26) at HTMLTableRowElement.onclick (member.html:11)
該当のソースコード
HTML(member.html) <!DOCTYPE html> <html lang=ja> <body> <title>ログイン画面へようこそ</title> <p>ログインするユーザを選択して下さい。</p> <p> <table border=1 id="a"> <tr> <th>番号</th><th>名前</th><th>性別</th> </tr> <tr id="1" onmouseover="myfunc1(1)" onclick="myfunc2(1)"> <td>1</td><td>マリオ</td><td>男</td> </tr> <tr id="2" onmouseover="myfunc1(2)" onclick="myfunc2(2)"> <td>2</td><td>ルイージ</td><td>男</td> </tr> <tr id="3" onmouseover="myfunc1(3)" onclick="myfunc2(3)"> <td>3</td><td>ヨッシー</td><td>不明</td> </tr> <tr id="4" onmouseover="myfunc1(4)" onclick="myfunc2(4)"> <td>4</td><td>ピーチ</td><td>女</td> </tr> <tr id="5" onmouseover="myfunc1(5)" onclick="myfunc2(5)"> <td>5</td><td>ワリオ</td><td>男</td> </tr> <tr id="6" onmouseover="myfunc1(6)" onclick="myfunc2(6)"> <td>6</td><td>ワルイージ</td><td>男</td> </tr> <tr id="7" onmouseover="myfunc1(7)" onclick="myfunc2(7)"> <td>7</td><td>クッパ</td><td>男</td> </tr> <tr id="8" onmouseover="myfunc1(8)" onclick="myfunc2(8)"> <td>8</td><td>デイジー</td><td>女</td> </tr> </table> </p> <form name="form"> <p> </form><label>選択したユーザ:<input type="text" name="bread"></label></p> <p><label>パスワード :<input type="text"></label></p> <p><input type="button" value="ログイン" onclick="myfunc3()"></p> </p> </form> <script src="mario_bros.js"></script> </body> </html>
JavaScript(mario_bros.js) function myfunc1(idName){ for(var i=1; i<=20; i++ ){ if(document.getElementById(i) == null){ //もし要素が存在しなかったら break; //処理をやめる }else{ document.getElementById(i).style.backgroundColor = "#fff"; }; } document.getElementById(idName).style.backgroundColor="#cc99ff"; } function myfunc2(idName){ for(var i=1; i<=20; i++ ){ if(document.getElementById(i) == null){ break; }else{ document.getElementById(i).style.backgroundColor = "#fff"; }; } ; document.getElementById(idName).style.backgroundColor="#cc99ff"; var objTable = document.getElementById("a"); var a= objTable.rows[idName].cells[1]; var htmltd = a.innerHTML; form.bread.value=htmltd; //恐らくこの一行に問題あり。console.logでもalertで正しく動作する。 }
試したこと
最後の一行はconsole.logやalertを使えば問題なく動くのですが、
テキストボックス内に表示させるようにするにはどうすればよいでしょうか?
補足情報(FW/ツールのバージョンなど)
Win10
Visual Studio Codeで書きました。
何故CSSやjQueryを使わないのかという点については触れないようにお願いいたします。
回答2件
あなたの回答
tips
プレビュー