1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptを使わないで for のような動きを実現する方法

Last updated at Posted at 2021-07-24

巷では、このような質問が話題になっているようです👀

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」を使う

  1. HTMLファイルを開く
  2. 自力でループに必要なだけ改行する
  3. すべての改行を矩形選択する
  4. マークアップを記述する
  5. vscode-input-sequenceの機能で連番を入力する
    1. option+command+0キーを押下
    2. 最初の数字を入力(0始まりなら0)
    3. Enterキーを押下
  6. 完成

使い方

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?