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

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

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

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

Q&A

解決済

2回答

3980閲覧

JavaScriptのすごく基本的な疑問なのですが。。タグに囲まれていないのに

pegy

総合スコア243

JavaScript

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

1グッド

1クリップ

投稿2017/02/12 15:47

JavaScriptの超初心者なのですが、すごく疑問に思うことがあります。
全角の入力を制限するためにsampleのコードがとあるサイトに載っていたのですが
生のphpの書き方に慣れてる自分にはどうしても1つ理解ができないことがあります。

<script>タグの中のfunctionで目的となる関数を設定している内容は参考書を見ながら理解できたのですが、肝心の関数を使用しているonInput="checkForm(this)"が <script>タグに囲まれていないのではなぜでしょうか。 正直私のPHPの感覚では以下のような記載をしているような印象です。 <?php $foo ="hello"?> <p>echo $foo;</p> どんな場合でも<script>タグに囲まれていないとブラウザはjsのコードを理解できないと認識しておりました。 私の入門書にはこんな記法は載っていないので、もし理由やJavaScriptならではの記法等 教えていただければ幸いです。また、どのように検索したら良いかわからなかったため、参考サイトなどもあれば嬉しいです。 ```JavaScript <From> テキストボックス <input type="text" value="" onInput="checkForm(this)"> テキストエリア <textarea rows="2" onInput="checkForm(this)"></textarea> </form> <script type="text/javascript"> <!-- function checkForm($this) { var str=$this.value; while(str.match(/[^A-Z^a-z\d\-]/)) { str=str.replace(/[^A-Z^a-z\d\-]/,""); } $this.value=str; } //--> </script>
think49👍を押しています

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

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

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

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

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

guest

回答2

0

Fromタグはformタグの誤記だと仮定して回答します。
HTMLの属性には、イベント属性という特定のイベントが発生したときにjavascriptの実行がおこなえる属性が存在し、その属性は先頭にonがついています(例: onclick, oninput, など)。
現在はイベント属性を使うことはHTMLの可読性を下げるなど、色々と不都合な点が出てきたため推奨されていません


(追記)

HTML

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width"> 6</head> 7<body> 8<form> 9 <label> 10 テキストボックス 11 <input type="text" id="textbox1"> 12 </label> 13 14 <label> 15 テキストエリア 16 <textarea rows="2" id="textarea1"></textarea> 17 </label> 18</form> 19 20<script type="text/javascript"> 21 <!-- 22 document.getElementById("textbox1").addEventListener("input", function () { 23 checkForm(document.getElementById("textbox1")); 24 }, false); 25 26 document.getElementById("textarea1").addEventListener("input", function () { 27 checkForm(document.getElementById("textarea1")); 28 }, false); 29 30 function checkForm($this) { 31 var str = $this.value; 32 while (str.match(/[^A-Z^a-z\d\-]/)) { 33 str = str.replace(/[^A-Z^a-z\d\-]/, ""); 34 } 35 $this.value = str; 36 } 37 //--> 38</script> 39</body> 40</html>

投稿2017/02/12 16:03

編集2017/02/12 16:17
s8_chu

総合スコア14731

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

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

pegy

2017/02/12 16:09

ご返信ありがとうございます。 なるほど、そのような方法があるのですが、理解いたしました。 もしおっしゃる通り推奨されない場合には、例えば上記のような例において functionを実行させることになるのでしょうか?おそらくscriptタグを埋め込んでも実行させるon〜のようなトリガーがないため、少し悩ましいです。
s8_chu

2017/02/12 16:24 編集

addEventListener(http://www.pori2.net/js/event/2.html)を利用する方法が良いと思います。通常、idやclassといった属性は特定の要素に対してスタイルを設定することによく使用しますが、javascriptで要素を特定するときにも使用されます。
pegy

2017/02/12 16:21

ありがとうございます。学ばせていただきます。
guest

0

ベストアンサー

あまり使われなくなっているので、その書き方は覚えなくても大丈夫です。

【Event 属性 - ウェブデベロッパーガイド | MDN】
https://developer.mozilla.org/ja/docs/Web/Guide/HTML/Event_attributes

警告: これらの属性を使うことは避けるべきです。これは HTML を巨大化し可読性を下げます。情報と振る舞いの関心事が正しく分離されておらず、発見が困難なバグを生み出します。その上に、Event 属性の使い方はほとんどの場合、Window オブジェクト上のグローバル関数にスクリプトを晒す原因になります。これはグローバルの名前空間を汚染します。

投稿2017/02/12 15:51

kei344

総合スコア69400

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

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

pegy

2017/02/12 16:11

夜分にありがとうございます。 上記の方と同様の回答であったため、あえて重複してお伺いしたいのですが、もしよろしければどのようにon〜を使用せずにこのようなケースでfunctionを実行するのが一般的になりますでしょうか? よろしくお願いいたします。
pegy

2017/02/12 16:11

すみません、重ねての質問になってしまったため質問を編集すべきであったかもしれません。 失礼いたしました。
pegy

2017/02/12 16:22

ご丁寧にありがとうございます。不慣れで逆引きできな感覚がなく、お手数をおかけいたしました。 勉強をさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問