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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

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

Q&A

解決済

3回答

956閲覧

input valueの値をjsでセットしたい

yutaroshiraishi

総合スコア2

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2021/06/08 01:01

前提・実現したいこと

html内の<input>の値をjsを用いて設定する拡張機能を作成しています。
ページ内にあるinputに値を入力し、ブラウザを閉じ、再度そのページを開いた際に<input>の値を入力した値に書き換えたいです。
また、ページ内のinputに値が入力されなかった場合は適用されないようにしたいです。

ですがエラーになってしまいます。
https://lab.syncer.jp/Web/JavaScript/Snippet/29/
こちらを参考にしてみましたが、下記のエラーがでてきます。

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

Uncaught TypeError: Cannnot set property ”value" of null at main.js:1

該当のソースコード

main.js

1document.getElementById("inputID").value = "50";

main.html

1<form id = "formID"> 2 <input type="number" class = "TiffOne-input-button" value="10" id="inputID"/> 3</form>

試したこと

main.jsの
document.getElementById("inputID").value = "50";

document.forms.formID.inputID.value = "50";
に変更してもダメでした。
変更するとこのようなエラー分になりました。
Uncaught TypeError: Cannot error property "inputID" of undefined at main.js:1

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

Edge(chromium版)拡張機能です。

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

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

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

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

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

guest

回答3

0

エラーはnullにはvalueというプロパティなんて無いよというメッセージです
つまりdocument.getElementById("inputID")がなにもつかめなかったということ

javascript

1document.getElementById("inputID").value = "50"; 2↓↓↓ 3window.addEventListener('DOMContentLoaded', ()=>{ 4 document.getElementById("inputID").value = "50"; 5});

投稿2021/06/08 01:18

yambejp

総合スコア114843

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

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

yutaroshiraishi

2021/06/08 01:30

ご回答ありがとうございます。 ご指摘通り実装したところ、エラーはなくなりました! ですが、値に何もセットされませんでした。。
yambejp

2021/06/08 01:33

あとは想像するしかないですが inputIDというidをつけたHTML要素が複数あるのでは?
yutaroshiraishi

2021/06/08 01:40 編集

ありがとうございます。 ID名を変えてみましたが変わりませんでした。。 html内にボタンを追加し、それが押された際に値を変更する。といった実装を行ってみたところ変更されました。 もう少し考えてみようと思います。
guest

0

ページのロードが完了する前にコードが走っているのではないでしょうか。
下記を試してみてください。

JavaScript

1window.onload = function () { 2 document.getElementById("inputID").value = "50"; 3};

投稿2021/06/08 01:16

itagagaki

総合スコア8402

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

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

yutaroshiraishi

2021/06/08 01:32

ご回答ありがとうございます。 ご指摘通り実装したところ、エラーはなくなりました! ですが、こちらも値に何もセットされませんでした。。
itagagaki

2021/06/08 01:35

console.log("ok");でも入れて、そこが走っているかを確認してください。 ついでに var elem = document.getElementById("inputID"); console.log(elem); elem.value = "50"; とでもしておいたほうがチェックがはかどりますね。
yutaroshiraishi

2021/06/08 02:11

ありがとうございます! 記載位置を修正したところ適用されました! ご回答いただきありがとうございます。<m(__)m>
guest

0

ベストアンサー

コードが一部過ぎて一概には言えませんが、要素が取得できてない(nullであることから)のは明らかなので、main.jsの読み込み位置がhtmlより前にあるんじゃないでしょうか。
DOMContentLoadedのイベントを挟むか、</body>の前にmain.jsを置いてください。

投稿2021/06/08 01:16

m.ts10806

総合スコア80850

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

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

yutaroshiraishi

2021/06/08 01:41

情報が少ない中、ありがとうございます。 html内にボタンを追加し、それが押された際に値を変更する。といった実装を行ってみたところ変更されました。 htmlより前に読み込んでいるという点かもしれません。少し調査してみます。
yutaroshiraishi

2021/06/08 02:09

やはり、htmlより前にmain.js(document.getElementByID("inputID").value = "50"; を読み込んでいたことが原因のようでした。 記載位置を後ろにしたところ解決しました。ありがとうございます。
m.ts10806

2021/06/08 02:09

冒頭に書いたとおり、コードが一部過ぎますので他の回答者も存在しないものに対して想像するしかなく、それは質問者さんの現状と合致してない可能性はあります(最初の回答時点でも「だろう」です)。 コードはコピペで再現できるよう、なるべく全体提示してください。
m.ts10806

2021/06/08 02:10

あれ?それなら他の回答も言ってることは同じで解決策も同じですよ。 対象要素の読み込みを待つかどうかですから。
yutaroshiraishi

2021/06/08 02:10

すみませんでした。 ありがとうございます。
yutaroshiraishi

2021/06/08 02:12

そうなんですね、 すべての回答者様に高評価をつけさせていただきました! ありがとうございました<m(__)m>
m.ts10806

2021/06/08 02:20

それぞれの機能についても調べてください。そのために回答にリファレンスへのリンクをつけています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問