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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

HTML

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

Q&A

解決済

2回答

760閲覧

javascriptが重複した場合の挙動について

megumi11222000

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2017/12/01 02:03

編集2017/12/01 02:43

![イメージ説明]

・入力用と表示用のテキストボックスが2つ
・ラジオボタンが3つ
という画面があり、以下の仕様を満たしたく思っております。

1)入力用テキストボックスに入力し終わった数値を2倍した答えを、表示用テキストボックスに転記する
2)ラジオボタンが変更されたら、表示用テキストボックスの背景色を変更する(左から、無色・赤・黄)

そこで、テキストボックスの入力はonblurイベント、ラジオボタンはonClickイベントを使用することにしました。

テキストボックスに「100」と文字を入力し、カーソルを動かさずそのままマウスクリックでラジオボタンの変更を行ったところ、onblurイベントも動いてはいるようなのですが200の記載がなされず、後者のonClickが有効となり背景色のみ変更されます。

scriptが重複した場合、どちらも満たす、もしくは前者を活かし後者はキャンセルさせるというような動きをさせたいのですがどのような実装を行うとよいでしょうか。Webはあまり詳しくないため、参考ページなどご教授頂けますと大変助かります。

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

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

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

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

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

x_x

2017/12/01 02:14

PHPとありますが、サーバー側の処理は関係あるのでしょうか?
megumi11222000

2017/12/01 02:35

ご質問有難うございます。私の印象ですとイベントの記載に問題があるのかと思っており、サーバー側に関係が無いと考えておりますが、どのような点がネックになり得そうでしょうか。
x_x

2017/12/01 02:38

そうであれば、タグも、タイトルからもPHPを外すべきかと思います。また、いまのソースは提示いただけませんか?
megumi11222000

2017/12/01 02:43

了解いたしまた。PHPで記載しておりましたため、そちらの実装にも関係ある可能性もあり、と思っていたのですが、関係が薄そうですので外したいと思います。ソースが膨大で、また該当箇所の転記も難しいため、提示できず申し訳ないです。。
x_x

2017/12/01 02:47

こちらでは再現させられないのですが、確認しているブラウザは何でしょうか?
guest

回答2

0

PHP javascriptが重複した場合の挙動

重複とはなんだったのか……

そもそもの部分に混同がありそうなのでこの部分のみ回答しておきます。
ブラウザ(Chromeとする)とWebサーバ(Apach+PHP)のやり取りは概ねこのフローになっています。

  1. Chrome等のブラウザからWebサーバにHTTPリクエストが飛ぶ
  2. Webサーバ(Apache)はPHPを起動してHTMLファイルを生成する
  3. WebサーバはChromeに生成したHTMLを返す
  4. Chromeは帰ってきたHTMLを解析する
  5. ChromeはHTMLの内部にJavaScriptの記述を発見し、それを実行してDOMを書き換える

ここで明確にしておきたいのは
PHPにとってHTMLやJavaScriptは単なる文字列であり、
その文字列をChromeがどう解釈しようが知ったことではありません。

エディタでHTMLファイルを開いて編集しても単なる文字列でしょ?
勝手に実行されたり、視覚的に表示したりしないでしょ?それと同じことです。

なのでPHPによって動的なJavaScriptを生成しても問題ありませんし、
生成したJavaScriptのコードが原因でPHPの挙動に影響が出る事はありえません。

投稿2017/12/01 02:42

miyabi-sun

総合スコア21158

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

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

megumi11222000

2017/12/01 02:50

ご記載頂いております内容はその通りであると思います。私がそういった点を全く理解していないため、トンチンカンな質問をしてしまっているのだと思います。yambejp様に頂いた内容が非常に参考になりましたため、再度確認を行ってみます。
guest

0

ベストアンサー

テキストボックスにはoninput、ラジオボタンにはonchangeを利用して下さい

sample

javascript

1window.onload=function(){ 2 document.querySelector('input[name=nyuryoku]').addEventListener('input',function(e){ 3 document.querySelector('input[name=hyouji]').value=e.target.value; 4 }); 5 document.addEventListener('change',function(e){ 6 var t=e.target; 7 if(t.nodeName=="INPUT" && t.name=="color"){ 8 var v=document.querySelector('input[name=color]:checked').value; 9 with(document.querySelector('input[name=nyuryoku]').classList){ 10 remove('aka','kiiro'); 11 if(v=="aka") add('aka'); 12 if(v=="kiiro") add('kiiro'); 13 } 14 } 15 }); 16}

css

1input.aka{background-Color:red;} 2input.kiiro{background-Color:yellow;} 3input[readonly]{background-Color:gray;}

HTML

1<form> 2入力:<input type="text" name="nyuryoku"><br> 3表示:<input type="text" name="hyouji" readonly><br> 4<input type="radio" name="color" value="mushoku">無色 5<input type="radio" name="color" value="aka">赤 6<input type="radio" name="color" value="kiiro">黄色 7</form>

投稿2017/12/01 02:13

編集2017/12/01 02:35
yambejp

総合スコア114775

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

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

megumi11222000

2017/12/01 02:32

早急なご回答有難うございます。それぞれイベントについて調べてみたのですが、oninputですと満たしたい仕様に沿っておりませんでした。正確にはテキストには数値が入力されるため、入力され終わった時点で処理を行いたいです。私の質問が悪かったため、文を変更しています。そのため、意味がないのかもしれませんがonblurイベントとonchangeイベントで確認を行ったのですが、結果は同じでした。
yambejp

2017/12/01 02:33

sampleつけておきました
yambejp

2017/12/01 02:36

> 入力され終わった時点で処理 であればonchangeが妥当ですね
megumi11222000

2017/12/01 02:45

ソースまで転記頂きありがとうございます。そちらを参考にさせて頂き、onchangeを使用して再度確認してみたいと思います。
yambejp

2017/12/01 02:57

ちなみにonchangeにするには私のソースの'input'を'change'と書き換えるだけです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問