特定の文字が入った要素を変数に代入したい | 質問掲示板 | 独学!未経験からWebデザイナーになる!!

Web制作や付随することを何でも質問できるコーナーです。

未経験からWebデザイナーになる!! > 質問掲示板 > カテゴリ: JavaScript > 特定の文字が入った要素を変数に代入したい

特定の文字が入った要素を変数に代入したい

当サイトのリニューアル作業に時間をあてるため、掲示板の投稿は当分停止させていただきます。
この構造の時回答を自動入力する方法ありますか?
IDやclass名は変わる可能性があります
<table class="categories" style=" width:500px; ">
<tbody>
<tr>
<td class="input_sp">
<div class="height_sp">
<span class="category_sp">
<input id="sc1-1" type="radio" name="sc1" value="1">
</span>
<label for="sc1-1" class="label_sp" onclick="">男性</label>
</div>
</td>
</tr>
<tr>
<td class="input_sp">
<div class="height_sp">
<span class="category_sp">
<input id="sc1-2" type="radio" name="sc1" value="2">
</span>
<label for="sc1-2" class="label_sp" onclick="">女性</label>
</div>
</td>
</tr>
</tbody>
</table>
Jimさん、こんにちは。

「回答を自動入力」というのは、男性もしくは女性のラジオボタンに初期でチェックを入れるということでしょうか?

それとも、ラジオボタンを選択した時に、value値をJavaScriptで変数に代入(男性なら1)するということでしょうか?

よくわからなかったので確認です。
また、jQuery使用・不使用など条件があればお願いします。
馬場誠さん、返信ありがとうございます。

前もって値を決めておきアンケートにおいて最初からチェックした状態にしたいです(前者)

jQueryは詳しくないですが使用不可能な環境ではないです。
Jimさん、こんばんは。

タイトルから深読みしてしまったようで失礼しました。
前者でしたらJavaScriptを使わずに、checkedで対応するのが良さそうです。

チェックを付けたいinput要素(ラジオボタン)に、

checked="checked"


を追加するだけで、最初からチェック可能です。

(例:男性にチェックを付ける場合
<input id="sc1-1" type="radio" name="sc1" value="1" checked="checked">


ちなみにHTML5などであれば、checkedと省略しても問題ありません。

(例:上記を省略した記法にした場合
<input id="sc1-1" type="radio" name="sc1" value="1" checked>
「自動入力」と書いているあたり、
拡張機能か何かでサイトを編集し
入力の手間を減らしたいんだと思います。
簡単な例として性別のラジオボタンが出ただけで。
どうでしょうか?あってますか?
かなり日が空きましたすみません

> 「自動入力」と書いているあたり、

> 拡張機能か何かでサイトを編集し

> 入力の手間を減らしたいんだと思います。

> 簡単な例として性別のラジオボタンが出ただけで。

> どうでしょうか?あってますか?

はいそうです
すみません、もう少し詳しく現在の状況や環境を書いていただけますか?(できればタイトルの意図も)

また、意図した機能を実装しようとした途中経過(やってみたこと)も併せてご記載いただけますと幸いです。
IDからタグの中身はgetElementByIdによって取得できます
ですが、今回したいのは中身からfor属性を検索し
そこからID検索を使いラジオボタンを選択します。
よくわからないままですが、書かれたことに対してお答えします。

単純に以下でよろしいでしょうか。

・for属性を検索
・for属性の値と同じIDのラジオボタンを取得&選択

jQueryが使用不可能ではないとのことで、それを使えば比較的簡単に実装できます。

jQueryをHTML内で読み込んだ上で、ラジオボタンよりも後に以下を記載します。

<script>
// label要素でfor属性を持っている要素を対象に繰り返し処理
$('label[for]').each(function(index, element) {
// elementのfor属性からidを取得
var id = $(element).attr('for');
console.log(id);

// idからラジオボタンを選択する
$('#' + id).attr('checked', true);
})
</script>


このコードが最適かはさておき、先ほどの言葉通りの動作です。

具体的には、全てのfor属性のIDに対応するラジオボタンにチェックの処理が走ります。

ただ、ラジオボタンは同一ラジオグループで1つしか選択できないので、結果的に最後のfor属性に対応するラジオボタンだけにチェックが残ります(今回の場合女性)。


このままでは使えないと思いますが、後はどういう仕様にされたいかで改造すれば良いと思います。

HTMLの書かれ方によっても変わりますが、最初だけチェックするようなこともできるはずですので、ご自身で試行錯誤してみてください。