スマホからアクセス時のテーブル変更方法

このQ&Aのポイント
  • スマホからアクセスしている場合、特定のテーブルの列に<tr></tr>タグを追加する方法について教えてください。
  • スマホからのアクセス時に特定のテーブルの列に<tr></tr>タグを追加するためのjqueryのコードがうまく動作しない場合、どのような方法を試せばよいでしょうか。
  • スマホからのアクセス時にテーブルの特定の列に<tr></tr>タグを追加する方法について、効果的なjqueryのコードを教えてください。
回答を見る
  • ベストアンサー

スマホからアクセス来た時だけtableを変更したい

jqueryを利用して、スマホからアクセス来た時だけ、 tableタグの特定の列に<tr></tr>を追加したいのですが可能でしょうか? やりたいことは下記のテーブルの, <table> <tr> <td class="a">aaaaaaaa</td><td class="b">bbbbbbbbbb</td> </tr> <tr> <td class="a">aaaaaaaa</td><td class="b">bbbbbbbbbb</td> <tr> </tr> <td class="a">aaaaaaaa</td><td class="b">bbbbbbbbbb</td> </tr> </table> td class="b"に<tr>タグを付加して、このようにしたいのですが、 <table> <tr> <td class="a">aaaaaaaa</td></tr><tr><td class="b">bbbbbbbbbb</td> </tr> <tr> <td class="a">aaaaaaaa</td></tr><tr><td class="b">bbbbbbbbbb</td> </tr> <tr> <td class="a">aaaaaaaa</td></tr><tr><td class="b">bbbbbbbbbb</td> </tr> </table> 可能でしょうか? スマホの判別方法は、 $(function(){ // 480px以下の幅のブラウザでアクセスした時は $(window).resize(function(){ var w =$(window).width(); var x = 481; if (w < x){ これでOKでしょうか? if文の続きが何を書いても上手く動いてくれません。 どうぞご教授よろしくお願いします。

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

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

function hoge (table) {  Array.prototype.forEach.call (   table.querySelectorAll ('tr'),   function (row) {    Array.prototype.slice.call (row.querySelectorAll('td'), 0, -1).forEach (     function (td, i) {      var tr = td.parentNode;      var cn = tr.cloneNode (false);      cn.appendChild (td);      tr.parentNode.insertBefore (cn, tr);      }     )   }  ) } hoge (document.querySelector('table')); スマホでうごく?

maridtoder
質問者

お礼

babu_baboo様 ご連絡ありがとうございます。 お教え頂いたコードを貼り付けたところ、 無事動作致しました。 どうも、私が書いたif分のところが正常に動作しなかったようで、 $(function(){ var agent = navigator.userAgent; if(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/Android/) != -1){ //お教え頂いたコード } }); に変更したら、実機スマホでも無事動きました。 私が一生かかっても書けないコードをこんな短期間で。本当に助かりました。 ありがとうございました!

関連するQ&A

  • テーブルのスタイルを効率よく設定するには?

    同じページに複数のテーブルがあり、別のスタイルを適用させたい。 ---- <style TYPE="text/css"> TABLE.A {border-style: solid; } TH.A { color: red; } TD.A { color: blue; } TABLE.B {border-style: double; } TH.B { color: green; } TD.B { color: black; } </style> <table class=A><tr><th class=A>A</th><td class=A>A</td></tr></table> <table class=B><tr><th class=B>B</th><td class=B>B</td></tr></table> --- <table><th><td>タグにclassを書けばいいのですが、もっとすっきりした方法はないでしょうか?

    • ベストアンサー
    • HTML
  • 横に並べたテーブル

    200×200px程度のテーブルを複数(行数や列数はバラバラです)横に並べたいのですが、とりあえず、 <html> <head> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>ページのタイトル</title> <style type="text/css"> <!-- body{ color:#330000; background-color:#cc3333; } table.a{ background-color:#ffffff; padding:1px; border:1px solid #000000; display:inline; margin:5px; } td.a{ text-align:center; vertical-align:middle; border:1px solid #000000; font-size:small; padding:1px; background-color:#ffffff; } div.center{ text-align:center; } --> </style> </head> <body> <div class="center"> <table class="a"> <tr><td class="a">AAAAAAAAAA</td></tr> <tr><td class="a">AAAAAAAAAA</td></tr> </table> <table class="a"> <tr><td class="a">BBBBBBBBBB</td></tr> <tr><td class="a">BBBBBBBBBB</td></tr> <tr><td class="a">BBBBBBBBBB</td></tr> </table> </div> </body> </html> という感じでdisplay:inlineで並べました。 これだとIEでは普通に見えるのですが、Ffだと表示が崩れてしまいました。 どこがいけないのかよくわかりません……。FfやNNでもちゃんと見えるようにしたいのですが、どうすればいいでしょうか。 また、スタイルシートでもっといい他の方法があったら教えていただけると助かります。 よろしくおねがいします。

    • ベストアンサー
    • HTML
  • 中のテーブルにまで及ばせないようにする

    テーブルの中にテーブルがあり、 外のテーブルには .table tr .table td でclassを設定しており、 その影響を中のテーブルにまで及ばせないようにすることは可能でしょうか? <table class=css> <tr> <td> <table> <tr> <td> ここに外側のcssの影響を及ばせたくない </td> </tr> </table> </td> </tr> </table>

    • ベストアンサー
    • CSS
  • TABLEのマスの増やし方

    HTMLのテーブル?について教えて下さい。 ******************************************************************************************************************************* <TABLE class=table_a style="WIDTH: 100%"> <TBODY> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> <TD class=table_a_th2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR></TBODY></TABLE> ******************************************************************************************************************************* という記載で、縦3列横3列の表が出来るのですが 表の内容(枠組み)を変更する方法が分かりません。 *********************************************************** <TABLE class=table_a style="WIDTH: 100%"> <TBODY> <TR> <TD class=table_a_th2 rowSpan=2>左列</TD> <TD class=table_a_td>中列</TD> <TD class=table_a_td> <P>右列<BR class=first-child>右列</P> <P>右列</P></TD></TR> <TR> <TD class=table_a_td>中列</TD> <TD class=table_a_td>右列</TD></TR> <TR> ************************************************************* 作成したいのはこのようなイメージのもので 中列と右列を増やして行きたいのです。 どなたか詳しいかたご教授下さい。

    • ベストアンサー
    • HTML
  • テーブルをテーブルで囲う意味はありますか?

    <table border=1> <tr><td> <table border=1> <tr><td> a </td><td> b </td></tr> </table> </td> </tr> </table> このようにテーブルをテーブルで囲う意味はありますか? htmlの勉強をしていて、 ネット上でテーブルのサンプルを拾ったのですが、 上記のようにテーブルをテーブルで囲んでました。 この方法でサイト上に100個くらいテーブルを作ってしまったのですが 今更ながらこういう書き方に意味はあるのかな? と思い始めてきました。 意味はあるのでしょうか?

    • ベストアンサー
    • HTML
  • テーブルの行の高さを指定する時全てのtdタグに?

    スタイルシートでテーブルの行の高さを指定する時は、 全てのtdタグにスタイルシートを指定するべきか、 1つだけ(一番左だけ)指定すればいいのかわからないので押してください。 全てのtdタグに指定しても、一つのtdタグに指定しても、結局はその行の高さは指定した高さになります。 コードを書く上でどちらが適切か教えてください。 -------------------------------------------------- <style type="text/css"> td.test {height: 50px;} </style> <body> 1の例<br>(2列ともclass="test"を入れた)<br> <table border=1> <tr><td class="test">1</td><td class="test">2</td></tr> <tr><td class="test">3</td><td class="test">4</td></tr> </table> <br><br> 2の例<br>(一番左の列だけclass="test"をいれた)<br> <table border=1> <tr><td class="test">1</td><td>2</td></tr> <tr><td class="test">3</td><td>4</td></tr> </table> <br><br> 3の例<br>(スタイルシートは何も指定していない)<br> <table border=1> <tr><td>1</td><td>2</td></tr> <tr><td>3</td><td>4</td></tr> </table>

    • ベストアンサー
    • 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>

  • Table内TDの子要素を移動させたいのですが・・

    初心者的な質問になるかもしれませんが、宜しくお願いします。 唐突ですが、こんなTable付きのHTMLがあります(ちょっと省略してます)。 <DIV>.....</DIV> ← (*) <Table> <TR> <TD>  ← (1) <SCRIPT ........</SCRIPT> <A HREF="">........</A> <LI> <DIV class ..... </DIV> <DIV class ..... </DIV> <DIV class ..... </DIV> <LI> </TD> <TD>  ← (2) <LI> <DIV class ..... </DIV> <DIV class ..... </DIV> <DIV class ..... </DIV> <LI> </TD> <TD>  ← (3) <LI> <DIV class ..... </DIV> <DIV class ..... </DIV> <DIV class ..... </DIV> <LI> </TD> </TABLE> (1)は複数の子要素があり、(2)と(3)はLI要素(ただし、その中に複数要素がある)です。 この(1)~(3)のTDの子要素部分だけを抽出し、(*)の DIVタグの真下に移動させるようなjquery文を作りたいのですが、 http://d.hatena.ne.jp/replication/20120113/1326382090 等の記事を参考に、 var cells, tblcell; // テーブルタグを探して、1番目のテーブルを取得する var rows = $("table")[0].rows; // 列を1つずつ取り出す $.each(rows, function(i) { cells = rows[i].cells; // 行を1つずつ取り出す $.each(cells, function() { // tdタグの値を書き換える tblcell = $(this).detach(); console.log(tblcell); // tdタグのスタイルシートを書き換える $('div').after(tblcell); }); }); このやり方だとrowの性質上、DIVの下へTD付きでそのまま来てしまいます。 そうではなく、TD直下のHTMLだけをそのままDIVの直下へつなげるように放り込みたいのですが、 中々うまいやり方がみつかりません・・・ なにか、よい方法はございませんでしょうか?

  • tableの横の位置を変えるには??

    <div> <table> <tr><td>あ</td><td>い</td></tr> <tr><td>う</td><td>え</td></tr> </table> </div> が仮にあったとして、これを外部CSSファイルでどこかのタグに text-align:center を適用させ、テーブルの位置を真ん中にさせたい(表のような使い方です)んですが、自分でやってみたら、divとtableにIDとclassで両方試して適用させましたができませんでした。 この表の横の位置をブロックとしてとらえて移動させることはできる でしょうか??

    • ベストアンサー
    • HTML
  • tableレイアウトをcssで軽くできませんか?

    tableタグを使用して、ごく普通の表を作成し、Web上に掲載しています。 しかし、とにかく情報量が多く、情報が増えるたびに明らかに重くなってきました。 今のうちに対策をと思い、何とかcssを使用しソースを軽くしようと思っています。 現在掲載中の表は下記のような、いたってシンプルなものです。 <table class="table1"> <tr> <td class="midasi">日付</td> <td class="midasi">対戦相手</td> <td class="midasi">勝敗</td> <td class="midasi">備考</td> </tr> <tr> <td>1月1日</td> <td>○○高校</td> <td>勝ち</td> <td>4分30秒 ○×反則</td> </tr> <tr> <td>1月2日</td> <td>××高校</td> <td>負け</td> <td></td> </tr> 。 。 ~~~ 以下続く ~~~ 。 。 </table> 表である以上tableタグになってしまうのは仕方ないとは思うのですが、上手い具合にソースの量を減らせれば改善したいと思っています。 アドバイスの程、よろしくお願い致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう