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

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

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

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

Q&A

解決済

2回答

1001閲覧

java scriptで変数を用いた「for="」を挿入したいが、「id="」しか反応が返りません…

pkpk0120

総合スコア3

JavaScript

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

0グッド

0クリップ

投稿2021/08/30 17:44

編集2021/08/31 01:52

前提・実現したいこと

<label class="050" for="hoge1">ああ0あ</label>
<label class="050" for="hoge2">ああ0あ</label>
<label class="050" for="hoge3">ああ0あ</label>
上記の「for="hoge3"」の部分を変数を用いたjavaで挿入したいです。

下記の「該当のソースコード」のコードを実行すると
<label class="050" id="hoge1">ああ0あ</label>
のように、「id="hoge1"」では実現できるのですが、
<label class="050" for="hoge1">ああ0あ</label>
のように「for="hoge1"」にはなってくれず、困っています…。

どうしたらid="ではなくfor="が記述されますでしょうか?

学び始めたばかりです。初歩的な質問でしたら申し訳ありません。
どなたかご教授頂けたらほんとうに助かります…。

発生している問題・エラーメッセージ

該当のソースコード

<label class="050">あああ</label> <label class="050">あああ</label> <script> var tags=document.getElementsByTagName("label"); var count=0; for (var i=0;i<tags.length;i++){ if(tags[i].className=="050") tags[i].id="hoge"+(++count).toString(); } </script>

試したこと

・tags[i].id="hoge"+(++count)の部分の書き換え

tags[i].id="hoge"+(++count) を
tags[i].for="hoge"+(++count) と書き換えたのですが、「id」の文字の部分を書き換えると「id="hoge"+(++count)」自体が挿入されなくなってしまいます…。

「id="」を書き換える前:<label class="050" id="hoge1">ああ0あ</label>
「id="」を「for="」と書き換えるとこのようになってしまいます:<label class="050">ああ0あ</label>

補足情報(FW/ツールのバージョンなど)

java scriptの部分は、.htmlに<script></script>で記述しています。

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

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

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

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

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

jimbe

2021/08/30 17:51

> .htmlに<script></script>で記述 つまりこれは javascript です。java とは違いますので、ご質問のタグを変えて頂けますでしょうか。
pkpk0120

2021/08/30 17:57

ご指摘ありがとうございます!タグの修正をさせていただきました。ごめんなさい。
m.ts10806

2021/08/30 20:17

質問内容も修正されたほうが良いですね。 >javaの部分は
pkpk0120

2021/08/31 01:51

ご指摘ありがとうございます!javaとjavascriptを混同していました。申し訳ありません…。修正させていただきました!ありがとうございます!
guest

回答2

0

ベストアンサー

htmlFor」を試してみてください。

変更前)tags[i].for = ~
変更後)tags[i].htmlFor = ~

■ HTMLLabelElement.htmlFor
https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/htmlFor

投稿2021/08/30 19:06

cx20

総合スコア4648

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

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

pkpk0120

2021/08/31 01:49

ありがとうございます!htmlForと書き換えたところ、無事hoge1 hoge2などと反映させることが叶いました!!ほんとうに助かりました。URL先も参考にしてもっと学びたいと思います。ありがとうございました!
guest

0

プロパティでアクセスせずに属性を書き換えてください

javascript

1let count=0; 2document.querySelectorAll('label').forEach(x=>{ 3 if(x.classList.contains('050')){ 4 x.setAttribute('for',`hoge${++count}`); 5 } 6})

投稿2021/08/31 00:16

編集2021/08/31 00:17
yambejp

総合スコア116724

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

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

pkpk0120

2021/08/31 01:48

なるほど、そういった記述のやり方もあるのですね!参考にさせて頂きます。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問