IEでjQueryのtoggleが動作しない!原因と解決法を徹底解説

このQ&Aのポイント
  • IEでjQueryのtoggleが動作しない問題を解決する方法を解説します。
  • inputをクリックすることで行の表示/非表示を切り替える方法について、IEでの動作について詳しく説明します。
  • FireFoxやSafariなどの他のブラウザでは正常に動作するが、IEで問題が発生する場合、スクリプトの記述に誤りがある可能性があります。
回答を見る
  • ベストアンサー

IEでjQueryのtoggleが動作しません。

IEでjQueryのtoggleが動作しません。 inputをクリックすることで同じクラス名が与えられている 行を非表示/表示の切替えを行なおうとしています。 FireFox,Safariその他のブラウザでは正常に動作します。 スクリプトの記述に誤りがあるのでしょうか?以下ソースです。 ■JavaScript <script type="text/javascript"> $(document).ready(function(){ $("#sets input").click(function () { var trshow = $(this).attr("class"); $("tr"+"."+trshow).toggle(); } ); }); </script> ■HTML <table id="sets"> <tr> <td>0001 ああああ<br /> <input type="button" class="set01" value="セット内表示/非表示" /></td> </tr> <tr class="set01 set"> <td>サンプルサンプル</td> </tr> <tr class="set01 set"> <td>サンプルサンプル</td> </tr> <tr> <td>0002 いいい<br /> <input type="button" class="set02" value="セット内表示/非表示" /></td> </tr> <tr class="set02 set"> <td>サンプルサンプル</td> </tr> <tr class="set02 set"> <td>サンプルサンプル</td> </tr> </table> ■CSS .set { display: none; }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

classをclassNameに修正? var trshow = $(this).attr("class"); ↓ var trshow = $(this).attr("className");

ikachan39
質問者

お礼

動作しました! ありがとうございます!! 本当に助かりました。

関連するQ&A

  • IE8でjQueryのtoggleが動作しません。

    IE8でjQueryのtoggleが動作しません。 inputをクリックすることで同じクラス名が与えられている 行を非表示/表示の切替えを行なおうとしています。 同様の内容を、 http://okwave.jp/qa/q6117684.html で質問し、IE7とIE8の互換モードでは動作できるようになりました。 metaタグで強制的に互換モードにする以外に 対処法がありましたら教えてください。 ■JavaScript <script type="text/javascript"> $(document).ready(function(){ $("#sets input").click(function () { var trshow = $(this).attr("className"); $("tr"+"."+trshow).toggle(); } ); }); </script> ■HTML <table id="sets"> <tr> <td>0001 ああああ<br /> <input type="button" class="set01" value="セット内表示/非表示" /></td> </tr> <tr class="set01 set"> <td>サンプルサンプル</td> </tr> <tr class="set01 set"> <td>サンプルサンプル</td> </tr> <tr> <td>0002 いいい<br /> <input type="button" class="set02" value="セット内表示/非表示" /></td> </tr> <tr class="set02 set"> <td>サンプルサンプル</td> </tr> <tr class="set02 set"> <td>サンプルサンプル</td> </tr> </table> ■CSS .set { display: none; }

  • jQueryでテーブル行の表示・非表示

    JavaScript・jQueryでテーブル行(trタグ)の表示・非表示を 切り替えるスクリプトを以下のように作成しましたが うまく動きません。 dispChg()内で 非表示に設定したクラス名(hid)を追加し 全行を非表示にできていますが 次の該当trから 非表示に設定したクラス名(hid)の削除がうまくいかないようです。 JavaScriptの引数からクラス名を引き継げないのでしょうか。 どなたか修正できる方がいらっしゃいましたら 教えてください。 よろしくお願いいたします。 <html> <head> <title>test</title> <style type="text/css"> <!-- .hid { display:none } --> </style> <script src="jquery-1.2.6.pack.js" type="text/javascript"></script> <script type="text/javascript"> <!-- function dispChg(trClass){ /* まず全行を非表示 */ $('tr[class]').addClass('hid'); /* 該当の行を表示 */ $('tr[class*=trClass]').removeClass('hid'); } --> </script> </head> <body bgcolor=#ffffff topmargin="0" leftmargin="0" marginheight="0" marginwidth="0"> <input type="button" value="全部表示" onclick="dispChg('atype btype ctype dtype')"> <input type="button" value="a" onclick="dispChg('atype')"> <input type="button" value="b" onclick="dispChg('btype')"> <input type="button" value="c" onclick="dispChg('ctype')"> <input type="button" value="d" onclick="dispChg('dtype')"> <table border="1"> <tr class="atype"><td>a</td></tr> <tr class="btype"><td>b</td></tr> <tr class="ctype"><td>c</td></tr> <tr class="dtype"><td>d</td></tr> </table> </body> </html>

  • テンキーで「0.1」を打つと「.1」になる

    HTMLページにテンキーを打つと数字が出るといったものをしたくて、検索しましたところ、参考サイトを見つけました。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13197413368 「.」を追加したソースが下記になります。 「0.1」とテンキーを打つと「.1」になってしまいます。「0.1」になる方法を教えて下さいますか? 宜しくお願いします。 <style type="text/css">table { border: 0px; margin: 0 auto; border-collapse: collapse; } div#cc { text-align: center; } input { font-size: 12px; margin: 0; padding: 0; } input.key { width: 32px; font-family: monospace; font-size: 12px; } </style> </head> <body> <div id="cc"> <form name="myForm" action="#"> <input name="tx1" size=24 tabindex=1 maxlength=20 value="" onClick="selecttext(this)"><br> <input name="tx2" size=24 tabindex=2 maxlength=20 value="" onClick="selecttext(this)"><br> <input name="tx3" size=24 tabindex=3 maxlength=20 value="" onClick="selecttext(this)"><br> <hr> <table> <tr> <td><input type="button" class="key" value="7" onClick="keyEvent('7')"></td> <td><input type="button" class="key" value="8" onClick="keyEvent('8')"></td> <td><input type="button" class="key" value="9" onClick="keyEvent('9')"></td> </tr> <tr> <td><input type="button" class="key" value="4" onClick="keyEvent('4')"></td> <td><input type="button" class="key" value="5" onClick="keyEvent('5')"></td> <td><input type="button" class="key" value="6" onClick="keyEvent('6')"></td> </tr> <tr> <td><input type="button" class="key" value="1" onClick="keyEvent('1')"></td> <td><input type="button" class="key" value="2" onClick="keyEvent('2')"></td> <td><input type="button" class="key" value="3" onClick="keyEvent('3')"></td> </tr> <tr> <td><input type="button" class="key" value="0" onClick="keyEvent('0')"></td> <td><input type="button" class="key" value="." onClick="keyEvent('.')"></td> <td><input type="button" class="key" value="←" onclick="oneClear()"></td> <td><input type="button" class="key" value="CA" onclick="allClear()"></td> </tr> </table> </form> </div> <script type="text/javascript"> var t; selecttext(document.myForm.tx1); function selecttext(o) { t = o; } function keyEvent(c) { t.value = (t.value=='0')? c: t.value+c; } function allClear() { t.value = ''; } function oneClear() { t.value = t.value.substring(0,t.value.length-1); } </script> </body>

  • javascriptで指定するtrを削除した時に、IEとfirefoxで動作が異なる

    はじめて、投稿いたします。 現在、javascriptで指定した行を削除するような動作を作っているのですが、firefoxとIEで動作が異なってしまうため困っています。 ちなみに、firefoxでは、実現してほしい動作をしてくれるのですが、IEではうまく動作してくれません。 tableのtrが3つ以上ある場合は、指定した行が正常に削除します。 しかし、IEだと、trが2つの時には、1番目のtrを削除しようとすると、一緒に2番目のtrの中身が見えなくなってしまいます。 ちなみに、その中の情報が削除されたのかなと思い、alertで表示させるとどうやら削除はされておらず、表示しなくなってしまうようです。 どうすれば、firefoxとIEで、同じような動作をするようにできるのでしょうか? よろしくお願いします。 以下に、ソースを貼っておきます。 <html> <head> <script type="text/javascript"> <!-- function delete_tr(html_this) { var TR = html_this.parentNode.parentNode; TR.parentNode.deleteRow(TR.sectionRowIndex); var table = document.getElementById('test_table'); var tr_num; var td_num; for (tr_num = 0; tr_num < table.rows.length; tr_num++) { for (td_num = 0; td_num < table.rows[tr_num].cells.length; td_num++) { alert(table.rows[tr_num].cells[td_num].innerHTML); } } } --> </script> </head> <body> <h1>Hello World !!</h1> <table border="1" id="test_table"> <tr> <td> <input type="button" value="delete" onClick="delete_tr(this)" /> </td> <td style="display: none;">------ bbbb ------</td> <td>------ cccc ------</td> </tr> <tr> <td> <input type="button" value="delete" onClick="delete_tr(this)" /> </td> <td style="display: none;">------ BBBB ------</td> <td>------ CCCC ------</td> </tr> <tr align="center"> <td colspan="3"> <input type="button" value="add"> </td> </tr> </table> </body> </html>

  • フォームで入力項目を全て別の確認画面に出したい

    JavaScriptでフォームを作成しています。 入力項目を別の確認画面に出したいのですが 組み合わせている内に、わからなくなってしまいました。どうかお助けください。(>_<) チェックボックスの所は、3つ以上チェックできないようにしてあります。 1.別ウィンドウ確認画面が出て確認する 2.OKならメールアドレスに送信&ありがとうございましたページへ(確認画面は閉じる) のようにしたいのですが、よろしくお願い致します。m(_ _)m ※尚、初心者の為何か失礼があったらすみません。 スクリプトでは足りない個所があるので、htmlを載せさせて頂きました。 ************************************************ <form name="myFORM" onClick="return check()"> <table> <tr><td> <table> <tr> <td> <input type="radio" name="plan" value="A"> A.</font></strong></div> </td> </tr> </table> <br> <table> <tr> <td> <input type="radio" name="plan" value="B"> B. </td> </tr> </table> <br> <table> <tr> <td>あ</td> <td> <input name="CB1" type="checkbox" id="CB12" value="あ"> </td> </tr> </table> チェックボックス全10項目中チェック3つまで<br> <br> *印は必須項目です<br> <table> <tr> <td>申込み内容</td> </tr> <tr> <td>会社名*</td> <td><input type="text" name="jimusho_name" size="30"></td> </tr> </table> テキストフォーム全9項目<br> <p>&nbsp; <input name="button" type="button" onClick="outdata();" value="送 信"> <input name="reset" type="reset" value="キャンセル">

  • document.getElementByIdがIE8だけ動きません

    javascript 初心者です。 HP上で問い合わせページを作っています。 質問の内容によって入力項目を表示/非表示させるために以下のようなスクリプトを書きました。 q-1 を選んだ時は”名前”と”質問内容”を入力,q-2 を選んだ時は”名前”,”入力1”,”質問内容”を入力するという形式です。 質問内容の選択はプルダウンメニューから行います。 IE8以外では動くのですが、IE8だけ動きません。 どうすればよいかを教えて下さい。 <head> 略 <script type="text/javascript"><!-- function checkmenu( disp ) { var a = disp ; document.getElementById('basic-info').style.display = "block"; document.getElementById('question').style.display = "block"; switch(a){ case "select_q-1" : document.getElementById('disp_q-2').style.display = "none"; break; case "select_q-2" : document.getElementById('disp_q-2').style.display = "block"; break; } } --> </script> </head> <body> <略> <select name="naiyou"> <option onclick="checkmenu('select_q-1')" value ="q-1">質問1<br> <option onclick="checkradio('select_q-2')" value ="q-2">質問2<br> <div id="basic-info" style="display:none"> <table class="aaa"> <tr> <td class="aaa" width="30%" valign="top"><b>お名前:</b></td> <td class="bbb" width="70%"><input type="text" name="name" size=30 maxlength=50 value=""></td> </tr> </table> </div> <div id="disp_q-2" style="display:none"> <table class="aaa" > <tr> <td class="bbb" width="30%" valign="top"><b>入力1:</b></td> <td class="td_toumei" width="70%"><input type="text" name="nyuuryoku1" size=30 maxlength=50 value=""></td> </tr> </table> </div> <div id="question" style="display:none"> <table class="aaa"> <tr> <td class="aaa" colspan="2"><b>質問内容: </b></td> </tr> <tr> <td class="bbb" valign="top" colspan="2"> <textarea name="question" cols="60"rows="10"></textarea> </td> </tr> <tr> <td class="bbb" colspan="2"> <input type="hidden" name="language" value="j"> <input type="submit" value="送信"> <input type="button" name="del" value="本文 クリア" onclick="msgclear()"> </td> </tr> </table> </div> 略 </body> 実際の質問の項目や入力内容はもう少し複雑ですが、おおまかにはこんな感じです。 プルダウンメニューで選択しても、IE8だけまったく動きません。 よろしくお願いします。

  • クリアボタンの動作について その3

    ご存知の方、ご教授くださいm(__)m クリアボタンの動作についてその2、の続きです。 現在、画面上で表示された表項目を消去するために表データクリアボタンを設置しており、 画面中の、表データを削除したいと考えています。 現状のHTMLは以下のようなものです。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>test</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $().ready ( function() { $('.buttons :button[name=clear]').click ( function() { alert('come!'); $('input[type="text"]').not('[disabled="disabled"]').val ( '' ); $('input[type="checkbox"]').removeAttr ( 'checked' ); }); $('.buttons :button[name=clear_table]').click ( function() { alert('come2!'); //<tbody>の中身を消すコード }); }); </script> <style type="text/css"> </style> </head> <body id="main"> <form> <input type="text" name="n1"> <input type="text" name="n2"> <input type="text" name="n1" value="3" disabled> <hr> <input type="checkbox" value="2"> <input type="checkbox" value="2"> <hr> <button type="button" name="clear">クリア</button> <button type="button" name="table_clear">表クリア</button> </form> <div class="data_area"> <table id="schedule_head_table" class="data_table" border=1> <thead> <tr> <th width="60">No.</th> <th width="100">品名コード</th> </tr> </thead> <tbody id=tbody> <tr> <td><div class=right-align>1</div></td> <td>item_code</td> </tr> </tbody> </table>   </div> </body> </html> 解決方法を教えていただけると助かります。 もし可能であれば、クリアボタン自体が動作しない理由も教えていただれば、今後の参考にさせていただきます。 よろしくお願いいたします。

  • DHTML, テーブルの幅を伸ばすには?

    以下の code で一応動くものが出来たのですが、 IE6 だと左下のステータスバーにエラーが出てしまいます。 function setWidth2(pixel) { calc.style.width = pixel; } ここに問題があるようですが、数字を そのまま入れた場合はだいじょうぶなようです。 直し方が解りますでしょうか? ------------------- <html> <head> <title>[ DHTML ]</title> <script type="text/javascript"> <!-- var w = 200; var h = 200; function setWidth(ratio) { var cur = calc.style.width.substring(0,3); var set = w*ratio; var time = 1; if(cur < set) { for(i=cur; i<=set; i++) { setTimeout("setWidth2(" + i + ")",time); time++; } } else if(cur > set) { for(i=cur; i>=set; i--) { setTimeout("setWidth2(" + i + ")",time); time++; } } } function setWidth2(pixel) { calc.style.width = pixel; } // --> </script> <style type="text/css"> .b1 { color: "#AFEEEE"; font-size: 24px; text-align: center; background-color: white; } .button8 { background-color: white; cursor: pointer; } </style> </head> <body><center> <br> <table border="0" cellspacing="1" cellpadding="10" bgcolor="#cccccc"> <tr> <td class="button8">Width</td> <td class="button8" onMouseDown="setWidth(1.0);">100%</td> <td class="button8" onMouseDown="setWidth(3.0);">300%</td> </tr> </table> <br> <table bgcolor="#cccccc" id="calc"> <tr> <td class="b1">&nbsp;</td> </tr> </table> </center></body></html>

  • JavaScriptでIE上のボタンクリック

    JavaScriptの初心者でIE上で表示されたボタンをクリックしたいのですが、2つのボタンのうち1つをクリックしたいです。 「document.all("Buttonok").click();」,「document.getElementById("Buttonok").click();」と記入してみたのですが、エラーとなります。 下記のようなボタンをJavaScriptで押すにはどうしたらいいのでしょうか? どなたかすいませんがご教授ください。 ===================================================== ボタンのHTML ※formで囲まれてないです。 <table border="0" cellspacing="0" cellpadding="0" width="150"> <tr> <td width="50%"> <div id="Button"> <input type="buttonok" value="OK" class="Button" onclick="onClk("1");" /> </div> <div id="Button"> <input type="buttonng" value="NG" class="Button" onclick="onClk("0");" /> </div> </td> </tr> </table>

  • jQueryで合計を出したい

    <table> <tr> <td class="point"><input type="text"></td> <td class="point"><input type="text"></td> <td class="point"><input type="text"></td> <td class="point"><input type="text"></td> </tr> </table> とHTMLで記述していて、jQueryを下記のように記述しました。 var total; j$(".point:text").change(function(){ j$(".point:text").each(function(){ var point = j$(this).val(); total = parseInt(point)+total; }); alert(total); }); alertで返ってくる結果が「NaN」となります。 どのようにすれば合計値が求められるでしょうか。 やりたいことは「pointクラス」内のテキストフォームの値を合計したいです。