質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

10127閲覧

idに数字を連続的に追加したい

2001Y

総合スコア83

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2016/11/24 14:00

編集2016/11/24 14:43

JavaScriptでpre要素にidを追加するのはこのコードだと思うのですが。

JavaScript

1$('pre').attr("id", "id名");

さらにそのidが複数にある場合。

JavaScript

1$('要素').attr("id", "id名"+ (i+1));

このように入力すると連続数字を追加できますよね。

HTML

1<pre id="id名1"></pre> 2<pre id="id名2"></pre>

それが

HTML

1<pre id="id名6"></pre> 2<pre id="id名6"></pre>

となってしまうのですがどういうことなのでしょうか。

###(追記)
https://teratail.com/questions/56205
こちら延長でのことなのですが無事、以下のコードでできました。

JavaScript

1let i = 1 2let id = "hljs" 3$('pre').attr("id", _ => id + i++);

ですが、コピーさせるためには
data-clipboard-target の項目と、コピーするJavaScriptで定義しているクラスを変えなければいけないのですがどうすれば良いのでしょうか。

このvar cp = new Clipboard($('.hljs')[0]);部分の.hljsを数字にしなければいけないと思うのですがどうすればいいのでしょうか。

JavaScript

1$(function() { 2 $('pre').each(function(i, block) { 3 hljs.highlightBlock(block); 4 }); 5 var cp = new Clipboard($('.hljs')[0]); 6 // 成功時アラート 7 cp.on('success', function(e) { 8 alert('コードのコピーに成功しました!!'); 9 }); 10 // 失敗時アラート 11 cp.on('error', function(e) { 12 alert('コードのコピーに失敗しました...'); 13 }); 14});

▼**data-clipboard-target** の項目の置き換えでできなかったコード▼

JavaScript

1let i = 1 2let data-clipboard-target = "#hljs" 3$('pre').attr("data-clipboard-target", _ => id + i++);
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

それだと連番にはなりません
i+1 が 6 なら全部の pre が 6 になります

javascript

1let i = 1 2$('pre').attr("id", _ => i++);

これで 1 からの連番になります

追記

id名を入れるとこうですね

javascript

1let i = 1 2let id = "id名" 3$('pre').attr("id", _ => id + i++);

投稿2016/11/24 14:16

編集2016/11/24 14:24
lazex

総合スコア604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2001Y

2016/11/24 14:19

$('pre').attr("id", ここにidでいいのですか? => i++); 後、JavaScriptじゃなくてcssとかで完結にはできないですよね。 おそらくこちらを使うのでが知識として興味があるのですが。
2001Y

2016/11/24 14:25

なるほど、やってみます。
lazex

2016/11/24 14:25

id 入りを追加しました。 cssでhtmlのidに(好きなid名+連番)を設定はできないですがそのidを使ってやりたいことによってはpreにidをいれなくともできる場合があると思います。
2001Y

2016/11/24 14:43

ありがとうございます。 追記でまた質問がありますのでまた教えてくださると助かります。
lazex

2016/11/24 15:20

前質問みました やりたいことは .hljs でハイライトした pre タグをクリックしたときに pre タグの中身をコピーしたいということであってますか? それなら id つけなくともこれでできました ``` <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.13/clipboard.min.js"></script> <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> <pre class="hljs"> let a = 1 </pre> <script type="text/javascript"> $(function(){     var clipboard = new Clipboard('.hljs', {target: e => e});     clipboard.on('success', function(e) {      //成功時の処理     });     clipboard.on('error', function(e) {      //失敗時の処理     }); }) </script> ```
lazex

2016/11/24 15:24

それと置き換えで出来なかったコードに `let data-clipboard-target = "#hljs"` がありますが変数名に `-` は使えないのでまず構文チェックのところでエラーになってたのではないでしょうか
2001Y

2016/11/24 15:45

highlight.jsでhighlightしたものは確かにクラスでコピーできるようなのですが、そうすると複数のpreでコードを表示した時に、挙動がわからないのですが。 それと、構文チェックの時のエラーのことですが、全然わからなので(涙)もしよかったら新たなコメントでいいので教えてくださると嬉しいです。
2001Y

2016/11/24 15:51

それとどうしてtargetを使っているのでしょうか、僕の記憶ではページ内リンクでの疑似要素の一つあったと記憶しているのですが、どういうことなのでしょうか。
lazex

2016/11/24 16:13 編集

> 複数のpreでコードを表示した時に、挙動がわからないのですが。 クリックした pre の中身がコピーされます > 構文チェック どこまでの知識があるのかわからないのですこし詳しめにかきます HTML ファイルをブラウザ(Chromeなど)で開いて確認していると思うのですが、 Chrome や Firefox で F12 キーを押せば開発者ツールが表示され、コンソールで開いているページのエラーなどが確認できます 上の方にタブがあるので `Console` というところを押せばコンソールが表示されます この場合は `Uncaught SyntaxError: Unexpected token -` という感じのメッセージが出ていると思います `let XXXX = "aaaa"` は XXXX という名前の変数を宣言して "aaaa" というデータをそこにいれるという処理です XXXX のところは日本語もふくめて基本的に好きな名前をつけれるのですが 半角記号など使えないものもあります 今回つかっている `-` は使えない文字なので JavaScript の構文として間違っていることになりエラーが起きます > target なぜ target といわれると Clipboard.js の仕様ですとしかいえないです 使い方は公式サイトにあるとおりです https://clipboardjs.com/ target: e => e で、コピーする対象を選択しています e => e は引数をそのまま返す関数ですのでクリックしたモノ自身がコピーされます
2001Y

2016/11/25 10:24

できましたありがとうございました! ベストアンサーに選ばせていただきます。
2001Y

2016/11/25 13:37

二つ目のクラス(.nohighlight)にも機能させたいのですが、.hljsの横に書くだけではダメなのでしょうか。
guest

0

フォー文で回して加算で良いんじゃ…。

使えませんでしたっけ?

投稿2016/11/24 15:10

KatsukiSugiura

総合スコア335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2001Y

2016/11/24 15:48

申し訳ないです。 JavaScript全くわからなくて、KatsukiSugiura様のおしゃっていることも理解できないのですが、for文とは繰り返しの処理のようで、全く自分は使えません。 もしよかったら新しいコメントでもいいので、コードを教えていただけると助かります。 それと、教えてくださりありがとうございます。
KatsukiSugiura

2016/11/24 17:10

フォー文は繰り返し処理です。 構文は for(変数; 条件; 加算){ 条件式 } と定義されていて、一定回数繰り返して同じ処理をする際に利用する文法です。 jqueryはjavascriptのライブラリで、フォー文が使えたと思いますので、クラスがわかる方なら関数や繰り返し処理は当然わかるはずだろうと思ったのですが…。 jqueryでDOM操作関連で仕事をされているなら下手に基本的な事覚えるよりアニメーションやエイジャックスなど覚えた方が実利があると思いますので、jquery for while loopなどでご自分で調べてみて下さい。
KatsukiSugiura

2016/11/24 17:20

追記:変数 代入 関数 引数 演算子 配列などが基本です。
2001Y

2016/11/25 08:55

詳しくありがとうございます。 全くわかってないです汗 仕事というか、まだ中三なので仕事ではなく趣味でやっているだけです。
KatsukiSugiura

2016/11/25 09:22

それなら、プロゲートで遊ぶとイイですよ。
2001Y

2016/11/25 10:25

はい、ありがとうございます。
guest

0

(i+1) ですと変数iの値は変わりません。
(i++)とすると変数iの値が+1されるので1ずつ増えるはずです。

投稿2016/11/24 14:19

nakasho_dev

総合スコア2655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2001Y

2016/11/24 14:19

ありがとうございます参考にさせていただきます。
2001Y

2016/11/24 14:43

追記でまた質問がありますのでまた教えてくださると助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問