20210609のHTMLに関する記事は7件です。

【javascript】動的なtable生成、tdに動的なselectを生成

やりたいこと tableの行を動的に追加。 さらにoptionも配列から動的に追加 想定 配列はDBから取得。DBが変われば、option選択肢も動的に変更されるようにする ※本当はjqueryを使ったほうがみやすくすっきりしますが、あえてjavascriptで書きます。  jqueryでの記述バージョンもそのうちアウトプットしようと思います。 下記をもっとシンプルに分解した記事 【javascript】シンプルな動的selectの生成、option(選択肢)の追加 【javascript】シンプルなtableの動的行追加・削除(ボタンクリックで行追加・削除) 【javascript】シンプルな動的tableのinputの値取得 完成形、動作確認(ここでは配列をあらかじめ設定) See the Pen js table td→input by Hirofumi Sato (@hfmst) on CodePen. コード 下記、データ取得については別途投稿します。 index.html <div> <button onclick="addrow()">行追加</button> <button onclick="getdt">送信</button> <button onclick="getdt">取得</button> </div> <table border="1" id="tbl"> <tr> <th>日付</th> <th>担当</th> <th>タスク</th> </tr> </table> js.html function addrow(){ let tbl = document.getElementById('tbl'); let name=["山田太郎","斎藤花子","最上祐樹"]; let todo=["メール対応","会議","資料作成","掃除"]; //input type=dateをtrに追加 let tr = document.createElement('tr'); let datetd = document.createElement('td'); let dateinp = document.createElement('input'); //↑上記で必要な要素(tr,td,input)を用意 dateinp.setAttribute('type','date');//inputを日付形式に datetd.appendChild(dateinp); //tdに追加 tr.appendChild(datetd); //下記、createSelect関数に、配列、tr、tblを渡す createSelect(name,tr,tbl); createSelect(todo,tr,tbl); tbl.appendChild(tr); } //担当とタスクは同じくselectなので、createSelectを使いまわします。 function createSelect(arr,tr,tbl){ let sl = document.createElement('select'); let td = document.createElement('td'); for(let num in arr){ //引数で受け取ったからoptionを作って動的にselect生成 let op = document.createElement('option'); op.text = arr[num]; sl.appendChild(op); } td.appendChild(sl); tr.appendChild(td); }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

IE非対応表示に関してベストプラクティスを考える

?課題 IEの利用者向けに「IEは非対応です。別のブラウザをお使い下さい」という表示をしようと思います。ところがIEの判定ルーチン部分や画面表示に関してはIEで処理できる必要があり、Webpack導入済みの環境で真面目にこれをやろうとすると、IE対応の必要なファイルとそうでないファイルを切り分けて云々……とする必要があります。 IE判定なんて複雑なものでもなし、告知画面そのものは所謂ペライチでJSすら使わないレベルなのに、これは面倒or本末転倒……っていうのが今回解決したい課題となります。 ?結論 そもそもIE判定及び告知画面についてはWebpackで扱わず、手打ちのHTML,CSS,JSファイルを作ってwebpackの出力先フォルダに突っ込んだ方が楽なのでは。 babel関係も不要で、Gitの無視ファイル設定だけちょこっと弄るだけですし。 手順 1. IE判定を行い、非対応の告知画面ページへ遷移するルーチンを書いたJSファイルを作る const isIe = function (userAgent) { return (userAgent.indexOf('msie') != -1 || userAgent.indexOf('trident') != -1) } if (isIe(window.navigator.userAgent.toLowerCase())) { location.href = "【警告画面のHTMLファイルのパス】" } もちろん、ここでDOMを書き換えて告知画面を出してもいいのですが、 何かの拍子にwebpackでバンドルしたjsと干渉しそうで不安 書き換え処理のJSもIE11対応する必要がある 告知画面のHTMLファイルは要件の性質上、直書きできる可能性が高く、この場合エディタの補完が効く という点を考慮して、告知画面は別ファイルに切り出してます。 それからIE11でもconstは使えます。 2. メインとなるHTMLファイルのheadタグ内にWebpackで生成したファイルより先に記述する <head> <script type="text/javascript" src="【IE判定&遷移ルーチン(要IE11対応)】.js"></script> <script type="text/javascript" src="【Webpackで作ったファイル】.js"></script> </head> 3.非対応の告知画面はざっくり手打ちの静的ファイルだけで構成 「IEは非対応です。別のブラウザ使ってください」という旨の表示以外何もしようがないので、手打ちHTMLとCSSだけで何とかなる範疇かと。HTMLファイル内に全部書いてしまってもいいかもしれませんね。 もうちょっとユーザーフレンドリーにするなら、エラー画面を見ているユーザーはWindowsユーザーかつEdgeをインストール済みであることが期待できるので、「Edgeで開く」リンクを置いておくといいと思います。 マイナーなテクニックですが、Windowsの場合、レジストリにパラメータを登録しておくと、ブラウザからURLスキームを使ってインストールしてあるソフトを呼び出すことができるんですね。 そしてedgeに関してはインストールした時に登録済みなので、 ​<a href="microsoft-edge:【edgeで開かせたいURL】">Edgeで開く</a>​​​​​ こういうリンクを踏ませるだけでedgeで開かせることができます。 ただまぁメジャーなChromeじゃなくてマイナーなEdgeを薦めるのはどうか、という葛藤もありますが、IE11を使ってるユーザー相手ですとねぇ……。B2Bで官公庁やITとは縁遠い業界相手になるほど刺さるかと。 またEdgeのインストールすらブロックしている法人の話もちらほら聞くので注意書きがあってもいいかもしれません?‍♂️ 備考 告知画面の表示ですが手抜きしすぎて、適当な背景+画面のど真ん中に「Internet Explorerはサポート外です。別のブラウザをお使い下さい」という表示を出すだけだと、怪しげなフィッシングサイトに飛ばされた感が半端ないです? 背景ぐらいは通常サイトに揃えるなり、一緒に会社ロゴを表示するなり、多少なり公式アピールをした方がいいです。 参考 使用してるブラウザを判定したい - Qiita Microsoft EdgeでWebページを開くインターネットショートカット 初心者備忘録
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Emmetを使いこなして効率化

はじめに UdemyでHTML・CSSを復習していて 「Emmet」という補完機能を知りました。 当たり前のように使っていたものをありましたが知らないでめちゃくちゃ便利なコマンドもありましたのでまとめていきます。 Emmetとは HTML・CSSのコーディングをする際に、コマンドを入力すると簡単にテンプレートが作成されたり、予測変換のような形で記述してくれたりする機能です。 Visual Studio Codeのエディターにはすでに含まれています。 Emmet公式サイト 下記の公式サイトを見ていただければコマンドが記載されております。 Emmetチートシート HTMLのテンプレートを呼び出す head の中に色々記述しての時間が一瞬でぱっ!って以下の記述を呼び出す事ができます。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> </body> </html> 記述方法 ! + Tabキーを押す これだけ。 一瞬でHTMLの準備が整いました。 id・classのついたdivタグを作りたい場合 <div id="container"></div> <div class="cls"></div> このような記述も簡単に作成できます。 記述方法 idの場合 # + id名(今回は"container") + Tabキーを押す classの場合 . + class名(今回は"cls") + Tabキーを押す spanタグの場合 <span class="cls"></span> 記述方法 span + . + class名 + Tabキーを押す 同じ要素を複数用意したい場合 <div id="container"> <div class="cls"></div> <div class="cls"></div> <div class="cls"></div> <div class="cls"></div> <div class="cls"></div> </div> 今まではmacのショートカットキーでコピー・貼り付けをしてましたがそんな必要ありませんでした。 記述方法 # + id名 + > + . + class名 + *必要な数 #container>.cls*5 終わり 様々な書き方があるのでチートシートを見ながら自分で使えそうなものを選ぶのが良いかと思います!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【javascript】シンプルな動的selectの生成、option(選択肢)の追加

やりたいこと 一次元配列からselectの選択肢を動的に作成 中身 selectにondblclickクリックで、optionをselectに追加 See the Pen createselect by Hirofumi Sato (@hfmst) on CodePen. コード index.html <select id="test" ondblclick="create_op()"></select> js.html function create_op(){ let arr = ["赤","青","緑","黒","白"]; //適当な配列用意 let sl = document.getElementById('test'); //対象のselect取得 if(sl.length<arr.length){ //selectが空の時のみ関数実行 for(let num in arr){ //arrの要素数を0から順にnumに入れて繰り返し処理 let op = document.createElement('option'); //optionを新しく毎回作る op.text = arr[num]; //optionのテキストに配列[num番目]の値を入れる sl.appendChild(op); //optionをselectに追加 } } }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【javascript】シンプルな動的tableのinputの値取得

やりたいこと  table内のinputからの記事取得    下記参考でわかりやすく解説して下さってますが、inputと値が混同して条件分岐があったため、  ここではinputのみで、よりシンプルな例で解説しています。   ●ひとつ前の記事 javascriptでシンプルなtableの動的行追加・削除(ボタンクリックで行追加・削除) ●参考 【JavaScript】テキストボックスを含むTableからテキストを取得する 完成 二次元配列に値格納してます。二次元配列はconsoleからご確認下さい。 See the Pen table getdata by Hirofumi Sato (@hfmst) on CodePen. コード 前回との変更部分だけです。(input取得のみ) 行追加・削除は前の記事から確認ください。 js.html //inputデータ取得 function getdt(){ let vals = []; //二次元配列の変数用意 let alltr = tbl.querySelectorAll('tr'); //すべてのtr取得➡alltrに代入。ここはヘッダーもふくんでます。 alltr.forEach(tr=>{ //alltrから一つずつ取り出してtrにいれて処理 let alltd = tr.querySelectorAll('td'); //trからtd全部取得 let arr =[]; //空の一次元配列を作成(←ここにおいて、forEachで毎回初期化します。 alltd.forEach(td=>{ arr.push(td.firstElementChild.value); //td一つずつ取り出し、値取得してarrにpush }) vals.push(arr); }) vals.shift(); //ヘッダー削除 alert(vals); //確認用 console.log(vals); //確認用 return vals; }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【初心者向け】details・summaryタグについてくる黒矢印を消す方法

どうも7noteです。使ってみたはいいものの、summaryタグについてくる黒い矢印の消し方が分からない人へ details・summaryタグを使用した時に「▶」←こんな矢印が表示されて消えない場合の非表示にする方法です。 ↑この黒矢印を消します。 style.css summary { display: block; list-style: none; } /* 一部ブラウザで消えなかった場合は以下も追記 */ summary::-webkit-details-marker { display:none; } 検証ツール(F12)でみてみると分かりますが、「::marker」とかかれたものがあります。こいつが原因です。 これはlist-style-typeの一種なので、よく使われる<li>についてくるリストマーク(・)と同種にあたります。 そのため、<li>のリストマークの点(・)を消す時と同じ方法で、list-style: none;で非表示にすることができます。 まとめ 使用していたreset.cssなどによっては、初期値を無効化していなかったりするので、もし黒矢印が残っていたら、個別にCSSを書いてもいいでしょうし 今後も必要ないという場合であればreset.cssなどのCSSファイルに追記してもいいかもしれませんね。 参考:https://teratail.com/questions/155649 おそまつ! ~ Qiitaで毎日投稿中!! ~ 【初心者向け】WEB制作のちょいテク詰め合わせ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

React appで作成したポートフォリオをGitHub Pagesでデプロイできた

React app(ポートフォリオサイト)をやっとデプロイできた 最終的に成功した時に参考にしたサイト 試した中でこのページ以外のやり方だと、なぜかエラーが出てデプロイできなかった。 エラーメッセージ npm ERR! missing script: build npm ERR! A complete log of this run can be found in: npm ERR! /Users/kakizakimanato/.npm/_logs/2021-06-07T14_05_58_985Z-debug.log npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! portfolio@0.1.0 deploy: `npm run build && gh-pages -d build` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the portfolio@0.1.0 deploy script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /Users/kakizakimanato/.npm/_logs/2021-06-07T14_05_59_032Z-debug.log kakizakimanato@kakiMacBook-Air portfolio % npm run deploy > portfolio@0.1.0 deploy /Users/kakizakimanato/deploy/portfolio > npm run build && gh-pages -d build npm ERR! missing script: build npm ERR! A complete log of this run can be found in: npm ERR! /Users/kakizakimanato/.npm/_logs/2021-06-07T14_06_57_636Z-debug.log npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! portfolio@0.1.0 deploy: `npm run build && gh-pages -d build` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the portfolio@0.1.0 deploy script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /Users/kakizakimanato/.npm/_logs/2021-06-07T14_06_57_690Z-debug.log まだ自分がデプロイできるかわからない時は、ファイルをコピーしてデプロイテスト用のディレクトリ内で試すといいかもしれません (色々な方法試しているうちにpackage.jsonファイルなどぐちゃぐちゃになります...) 少し追加でやらないといけないこと GitHubのアカウント情報を紐付ける $ git remote add origin https://github.com/<GitHubアカウント名>/<GitHubリポジトリ名>.git を実行する前に、GitHubアカウントの情報を設定する必要があった $ git config --global user.name "[githubユーザー名]" $ git config --global user.email "[githubで使用しているメールアドレス]" これでgit remote add originができる GitHub Pagesの設定 ソースブランチをmasterに設定し、rootファイルをdocsに変更し、["Save"]をクリック 数分待ってURLをクリックすると、成功していればWebサイトが見られるはず 次はファイルを編集後、再デプロイできるようになりたい
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む