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

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

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

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

jQuery

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

Q&A

解決済

4回答

1738閲覧

無駄なonloadを外したい

mobuocity

総合スコア18

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/09/20 09:41

編集2016/09/20 22:39

前回解決したのとよく似ているのですが、またわからないところがでてきてしまい、再度投稿させていただきます。

このコードはjQueryで全角入力された英数字を半角変換を参考にしてコードを書きました。
ある人にこのコードを見てもらうと

jQuery

1$(function(){ 2 $(".test").on("change", function() { 3 var str = $(this).val(); 4 str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 5 return String.fromCharCode(s.charCodeAt(0) - 65248); 6 }); 7 $(this).val(str); 8 }).change(); 9});

jQuery

1 var str = $(this).val(); 2 str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 3 return String.fromCharCode(s.charCodeAt(0) - 65248); 4}); 5

という部分の中に「平時読み込み時に実行されているからonloadを外してね。」と言われました。またスクリプトはできるだけhead内に書き加えてとも言われました。
しかし自分でも調べてみたのですがどこにonloadを実行しているのかわかりません。

改善点をご指摘いただけませんか?

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

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

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

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

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

guest

回答4

0

JavaScript

1var str = $(this).val(); 2str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 3 return String.fromCharCode(s.charCodeAt(0) - 65248); 4});

このコードに onload はありません。

JavaScript

1$(function(){ 2 // 処理 3});

このコードは onload ではありませんが、DOMContentLoaded に近い動作をします。
前質問で </body> にコードを置くことにしたようですので、このコードは削除して構いません。

Re: mobuocity さん

投稿2016/09/20 10:06

think49

総合スコア18162

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

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

mobuocity

2016/09/20 10:12

ありがとうございます。 前回は</body>にコードを置きましたが、今回は上記に書くように指示され 上記に書きました。説明不足でしたすみません。
think49

2016/09/20 10:36

とりあえず、onload 関係の処理は全くありません。 「指示を出した方の勘違い」か「mobuocity さんが指示内容の解釈を間違っている」のいずれかだと思います。 指示を出した方にもう一度、指示内容を確認することをお勧めします。
mobuocity

2016/09/20 22:41

今一度確認しましたが、同じところを指摘されました。
think49

2016/09/21 02:27

その方に「該当コードにonloadはなかった」と伝えてその方の意図を確認してください。 私達はコードから問題点を洗い出すことは出来ますが、「その方がどういう意図でmobuocityさんに指示を出したのか」は第三者である私達には分かりません。 yambejp さんが指摘されたように「$(function(){}) を onload と解釈した」のかもしれませんが、mobuocityさんが確認した場所と違いますし、厳密にはこれも onload ではないんですよね…。 後はmobuocityさんとその方との話し合いで解決すべき問題であると思います。
think49

2016/09/21 02:41

onloadがあるとするなら、「mobuocity さんがここにコードを書き移す際に必要な部分を削除して掲載してしまった」という可能性はありますね…。
guest

0

ベストアンサー

JavaScript

1// コードが切れていて正しく動かないはず 2 $(this).val(st 3 }).change(); // 切れているコード類がどうなっているのかによっては、これがonloadで実行される。

投稿2016/09/20 16:57

kei344

総合スコア69407

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

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

mobuocity

2016/09/20 22:37

失礼しました。修正します。
guest

0

以下のようにすれば$(function(){});で呼び出さなくても.testに作用します

javascript

1$(document).on('change','.test', function() { 2 console.log(1); 3 var str = $(this).val(); 4 str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 5 return String.fromCharCode(s.charCodeAt(0) - 65248); 6 }); 7 $(this).val(str); 8}); 9

投稿2016/09/20 11:10

yambejp

総合スコア114825

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

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

mobuocity

2016/09/20 22:40

ありがとうございます。head内にいれた場合だとどうなりますか?
yambejp

2016/09/21 00:17

HTML上どこで宣言しても大丈夫です $('.test').change()の場合、onload処理をしない場合は HTMLの後半(testクラスのオブジェクトがすべて表示されてから)でないと オブジェクトをつかめませんが、documentから引っ張れば後から追加された オブジェクトでも対象になります
guest

0

様々な意見、ご指摘ありがとうございます。
自分でエラーログを出しながら、あることに気づき、そのコードを消すとOKいただきました。
今からそのコードと説明をいたします。その前にたくさんの説明不足や返信が遅れたことをここでお詫びします。すみませんでした。

javascript

1$(function(){ 2 $(".test").on("change", function() { 3 var str = $(this).val(); 4 str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 5 return String.fromCharCode(s.charCodeAt(0) - 65248); 6 }); 7 $(this).val(str); 8console.log(0); 9 }).change(); 10});

のコードの下にある

javascript

1$(function(){ 2 $(".test").on("change", function() { 3 var str = $(this).val(); 4 str = str.replace( /[A-Za-z0-9-!”#$%&’()=<>,.?_[]{}@^~¥]/g, function(s) { 5 return String.fromCharCode(s.charCodeAt(0) - 65248); 6 }); 7 $(this).val(str); 8console.log(0); 9 }); 10});

の.change()を消すことが必要だったみたいです。
これがついてるときにページを開きconsole.log(0)見るとフォーマットを選択してない時点で
console.log(0)1 となっておりこれが「平時読み込み時に実行されているからonloadを外してね。」ということでした。 なので.change()を消すとページを読み込んでもconsole.log(0)は出ず、フォーマットを選択し、changeを行うとconsole.log(0) 1 となりました。
ちょっと説明があやふやなのですが、どう説明したらいいのか自分でもわかりません、またちょっと、「ん?」っと思ってるところがあるのでこれで精いっぱいです。 以上です。

投稿2016/09/21 03:03

mobuocity

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問