巷では、このような質問が話題になっているようです👀
HTML
Javascriptを使わないでforが実行したい
例<p>str1</p> <p>str2</p> ... <p>str100</p> → for(i=0;i<n;i++)
HTMLはスクリプト言語じゃないから無理だ!と言われても、執拗に質問をいろんなプラットフォームで続けているとのこと…。
そこで今回は、できる限り希望に近い解決策を個人的に考えてみました!🥒
前提と考察
HTML
解釈1:HTMLで複数の同じマークアップを繰り返し記述する方法を探しています。という意味。
解釈2:HTMLと同じように記述するけど、JavaScriptを動かせない不思議な環境があって(XML)、そこで実現したい。でもこれがなんだかわからないし、HTMLでできるならXMLでもできるやろ!HTMLって書いとこ。的なノリ
Javascriptを使わないでforが実行したい
解釈3:具体的には、JavaScriptのfor
文のような「イメージ」であることを表している
解釈4:単純に「ループ」と記載していない → コピペでは実現できない → 連番をコンテンツに含む必要がある(次のマークアップ例からもそんな印象がある。)
例
<p>str1</p> <p>str2</p> ... <p>str100</p> → for(i=0;i<n;i++)
→ つまり、質問内容は「静的に、連番テキストを伴う100個のマークアップを記述したい。最も効率的な方法を教えて欲しい。」(独自解釈)
おまけ考察1:JavaScriptを使わない理由
スキル上の問題は、for(i=0;i<n;i++)
がわかっているならできそうなので除外。
- もしかしたらHTMLじゃなくてXMLなのではないか?(解釈2より)
- HTMLを編集する仕事をしているJavaScriptが使えない第三者のために、楽な実装方法を探してあげている?
- セキュリティ上の理由でJavaScriptを無効にしたブラウザで業務を行わなければならない環境向けに、HTMLを納品する必要がある?
- JavaScriptをサポートしていない独自ブラウザ向けにHTMLを納品する必要がある?
おまけ考察2:PHPやPythonなどのバックエンドの技術も使えない理由
- HTTPを使わずに、
file
スキームで閲覧する前提? - あるいはスキル上の問題?
おまけ考察3:EJSや、ReactなどのSSG、HTMLプリプロセッサを使わない理由
- 既存の運用作業で、開発環境に手を入れられる立場にいない?
- 使えるなら使ってると思うのでスキル上の問題?(なげやり)
複雑なコーディングスキルを伴わないHTMLだけでできる方法の結論。
→ Visual Studio Codeで「vscode-input-sequence」を使う
- HTMLファイルを開く
- 自力でループに必要なだけ改行する
- すべての改行を矩形選択する
- マークアップを記述する
- vscode-input-sequenceの機能で連番を入力する
-
option+command+0
キーを押下 - 最初の数字を入力(0始まりなら0)
-
Enter
キーを押下
-
- 完成