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

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

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

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

jQuery

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

Q&A

解決済

2回答

412閲覧

【javascript】変数にいれたタグの属性を変更するにはどうしたら良いでしょうか?

hasshy

総合スコア102

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/07/20 07:36

編集2020/07/23 10:05

inputタグの値を自動入力するスクリプトを書きたいと思います。

例えば、下記の様なHTMLがあるとします。
同じ要素が複数ある場合、最初の要素で指定した要素を元にしたい場合です。

<input id="first_zip" type="text" name="1人目の郵便番号"> <select id="mode"> <option value="1">1人目と同じ</option> <option value="1">直接入力</option> </select> <input id="second_zip" type="text" name="2人目の郵便番号">

selectのイベントは省きますが、次の様に処理を書くと値が代入されません。

let modeList = document.getElementById('mode'); modeList.addEventListener('change', function(e){ let sample = document.getElementById('second_zip') if(! sample.value) { sample.value = document.getElementById('first_zip').value } });

下記の様に、直接要素を指定すれば代入されます。

if(! document.getElementbyId('second_zip').value) { document.getElementbyId('second_zip').value = document.getElementbyId('first_zip').value }

jQueryであれば下記の様なことは出来たと思いますが、
素のjavascriptの場合は指定したタグの参照は保持は出来ないのでしょうか?

$sample = $('#sample') $('#sample').val('値代入')

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

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

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

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

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

maisumakun

2020/07/20 07:43

> inputタグの値を自動入力するスクリプトを書きたいと思います。 どのような状況で書きたいのでしょうか?(HTMLを構築できる状況であれば、最初から<input>にvalueを与える、というほうが自然に思えます)
hasshy

2020/07/20 07:53

ご指摘ありがとうございます。 状況について追記いたしました。
miyabi_takatsuk

2020/07/20 11:06

・#sample要素がHTMLの中に見当たりませんので、記載おねがいします。 ・if(! sample.value) { の条件内を通っているか確認して下さい。
hasshy

2020/07/23 10:06

ご指摘ありがとうございます。 追記いたしました。 > ・if(! sample.value) { これは正常に判定できました。
guest

回答2

0

ベストアンサー

今、外出中なので確認してないのですが
!sample.valueでは駄目な気がします。
sample.value.length == 0 や
sample.value.value == ""

なら恐らく大丈夫だと思います。

帰宅して確かめてみました。下記コードで問題なく動作したので
!sample.valueでもOKでした。
なので問題があるとしたら、
省略されたselectイベントに問題がある可能性が高いと思われます。
let sample = document.getElementById('second_zip'); の位置が悪いなど
もう一つ気になったのは、document.getElementbyIdとbがBじゃなかったことくらいです。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>test</title> 7</head> 8 9<body> 10 <input id="first_zip" type="text" name="1人目の郵便番号" value="test"> 11 <input id="second_zip" type="text" name="2人目の郵便番号"> 12 <script> 13 let sample = document.getElementById('second_zip'); 14 if (!sample.value) { 15 sample.value = document.getElementById('first_zip').value; 16 } 17 </script> 18</body> 19 20</html>

投稿2020/07/20 07:48

編集2020/07/20 09:27
Jon_do

総合スコア1373

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

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

hasshy

2020/07/20 08:55

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

2020/07/23 10:09

ご連絡が遅れてしまい失礼しました。 ご確認いただきありがとうございます。 また、typoについては失礼いたしました。 検証のためにCodePenで一からコードを書いてみたところ解決できましたので、 もしかしたら元のソースの他の部分に原因があったのかもしれません。 おっしゃる通り、何か誤記があるかもしれません。 ご指摘いただきありがとうございます。
guest

0

流れ的にはこんな感じですかね?

投稿2020/07/20 08:03

yambejp

総合スコア114779

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

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

yambejp

2020/07/20 08:03

$(function(){ $('#first_zip').on('input',function(){ if($('#mode').val()==="1"){ $('#second_zip').val($(this).val()); } }); $('#mode').on('change',function(){ $('#second_zip').prop('readonly',$('#mode').val()==="1"); $('#first_zip').trigger('input'); }); });
hasshy

2020/07/20 08:54

ご回答いただきありがとうございます。 素のjavascriptの場合はセレクタの参照を保持できるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問