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

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

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

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

HTML

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

Q&A

解決済

3回答

10351閲覧

javascriptで値を入れる処理が走らない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2016/09/25 02:19

編集2016/09/25 03:06

現在、javascriptで実行した、
○○.value = 'test';
のような処理で値が入りません。

例えば下記リンクのNo.1のベストアンサーのソース
http://oshiete.goo.ne.jp/qa/971078.html
をそのままコピーして実行しても、
btn.valueやtxt.valueの値が変わりません。。

何か環境に依存しているものなのでしょうか?

OS:mac OS X El Capitan 10.11.6
使用ブラウザ:google Chrome 53.0.2785.116 (64-bit)

ちなみにデベロッパーツールで見ている限り、
function自体は実行されていて、
document.forms.test_form1.btn.value=val;
document.forms.test_form1.txt.value=val;
は走っているようです。
(末尾にセミコロンをつけても変わりませんでした)

何か凡ミスのような気もしますが、
思いつかないので、助けてください。。

<html> <head> <script type="text/javascript"> <!-- function setVal(val) { document.forms.test_form1.btn.value=val; document.forms.test_form1.txt.value=val; } // --> </script> </head> <body onload="setVal('abc')"> <form name="test_form1"> <input type="hidden" name="btn" value=""> <input type="text" name="txt" value=""> </form> </body> </html>

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

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

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

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

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

guest

回答3

0

ベストアンサー

何を書き換えたいのかわかりませんが、下記コードで書き換わることを確認しました。

JavaScript

1document.getElementById('commonsearch_header').elements['MT'].value = 'hoge';

(2016/09/25 12:44追記)

教えてgooのHTMLで実行するものと誤読しました。
先のコードは流して下さい。

下記コードで実装可能だと想います。
https://jsfiddle.net/6m750fuk/

JavaScript

1document.forms['test_form1'].elements['btn'].value = 'hoge'; 2document.forms['test_form1'].elements['txt'].value = 'foo';

document.formName は既存値と重複すると使えないので好ましくありません。
document.form[formName] も古い方法です。
同じ名前が複数あるとコードを書き換えなければならないデメリットもあるので getElementById を利用したコードに書き換えるのがベターだと思います。

Re: tavatar さん

投稿2016/09/25 03:01

編集2016/09/25 03:50
think49

総合スコア18162

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

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

退会済みユーザー

退会済みユーザー

2016/09/25 03:05

btn.valueやtxt.valueの値ですね。 どうやら環境依存で間違いなさそうですね。 ありがとうございます。
think49

2016/09/25 03:45

質問を誤読していたので親記事を編集しました。
退会済みユーザー

退会済みユーザー

2016/09/25 03:55

ありがとうございます! document.forms['test_form1'].elements['btn'].value = 'hoge'; でも document.getElementById("btn").value="hoge"; でもいけることを確認しました。 そしてChromeのデベロッパーツールで Sourcesタブにて値の変化をウォッチしていましたが、 Sourcesタブでは変化がないのですね。。 Elementsタブにて変化を確認しました。 原因は単純にこれのようですね。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2016/09/25 04:13

横レス失礼します。私の回答に対するコメントでは「getElementByIdでもだめですね」とのことでしたが、どういうことか説明していただけませんか?
退会済みユーザー

退会済みユーザー

2016/09/25 05:10

上記の通り、Sourcesタブで変化を見ていたことが原因でした。
guest

0

ソース(HTML)を貼り付け無いと適切な回答をもらえないと思います。

貼り付ける際は、該当部分のソースのみとし、実行可能なものにしないと載せた意味は半分もなくなります。
ソースは前後を必ずバックウォート3つで(```)くくって下さい。(上部のボタンにコードと言うアイコンがあります。)

ソースは自分の環境で実行して再現出来るか確認してください。

本来は修正依頼に書くべき内容ですが、最低限のソースにすると原因がわかることがかなり多いため回答としました。

投稿2016/09/25 02:39

iwamoto_takaaki

総合スコア2883

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

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

退会済みユーザー

退会済みユーザー

2016/09/25 03:06

ソースを追加しました。 おそらく通常は実行可能かと思いますので、 やはり環境依存のようですね。
iwamoto_takaaki

2016/09/25 16:42

私の環境でも、chromeのdeveloper toolsで調べると、 onload="setVal('abc')"が実行され。 console上ではdocument.forms.test_form1.btn.valueとdocument.forms.test_form1.txt.valueは”abc”になりました。
guest

0

○○が何だか分かりませんし、それに value があるのかも分かりませんが・・・

その要素の属性に id が設定されているなら document.getElementById メソッドでその要素のオブジェクトを取得して、それから value を取得してみたらどうなりますか?

document.getElementsByName
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByName

id 属性がなくて name 属性しか設定されてないなら document.getElementByName を使うとか(この場合取得できるのはコレクションになるので注意)

document.getElementById
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementById

投稿2016/09/25 02:30

編集2016/09/25 02:57
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/09/25 02:35

○○は導入文の意味合いなので、実際にはリンク先のソースを見ていただければと思います。。 getElementByIdでもだめですね。 というか、要素自体は取れていて、実行も正常に進むんですが、結果のvalue値だけが変わらない状態です。。 ちなみにキャッシュかと思ってクリアしてみても変わらずです。
退会済みユーザー

退会済みユーザー

2016/09/25 02:49

リンク先を見ろという前に、「input type="hidden" です」とか書いた方が親切だと思うのですが・・・ それはともかくとして、id 属性が付与されているのに document.getElementById でもオブジェクトが取得できないということですと、質問者さんが使っているブラウザ固有の問題か、質問者さんのやり方の問題ということになるのですが。残念ながら、自分は質問者さんの環境は持ってないのでそれ以上のことは分かりません。お役に立てずすみませんが、他の方の回答をお待ちください。
退会済みユーザー

退会済みユーザー

2016/09/25 03:03

原文を見ていただいたほうがわかりやすいかと思いました。 そうですか、残念です。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問