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

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

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

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

Q&A

解決済

3回答

1437閲覧

Function内の変数を出力したい (javascript)

arare000

総合スコア26

JavaScript

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

0グッド

0クリップ

投稿2016/11/16 04:53

編集2016/11/17 09:32

以下でalertが'0123456789'と表示されるようにしたいのですが、functionの括弧内をalert上に表示させることができません。何かヒントはないでしょうか?

※ありがとうございます。function内の括弧にcheckが入ったままの状態がデフォルトで動かせない状況です。

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

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

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

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

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

date

2016/11/16 05:47

なぜ動かせないのですか 動かすことは可能ですか?
kei344

2016/11/16 06:42

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答3

0

document.getElementById('demo').onsubmit = function(check)

document.getElementById('demo').onsubmit = function()

onsubmit = function(arg)
の場合第一引数にはeventオブジェクトが渡されます、したがって、

document.getElementById('demo').onsubmit = function(check)
書くと上で宣言したcheckではなくcheckの中身はeventオブジェクトになるからです。

投稿2016/11/16 05:01

編集2016/11/16 05:06
hiim

総合スコア1689

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

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

arare000

2016/11/16 05:03

ありがとうございます。function内の括弧にcheckが入ったままの状態がデフォルトで動かせない場合、他に解決策はあるでしょうか?
hiim

2016/11/16 05:07

function(check)の引数をcheck以外に変更できないという事ですか? もし関数の中身は編集かのうならcheckは使わず、var check2='0123....として check2を使うとか。。。
arare000

2016/11/16 11:13

そうですね、ちょっと考えなおしてみたいと思います。難しいということが分かりました。ありがとうございました。
guest

0

ベストアンサー

スコープの範囲の問題なのでcheckがグローバル変数で設定されていれば
以下で処理できるみたいです

HTML

1<script> 2var check = '0123456789'; 3window.onload=function(){ 4 document.getElementById('demo').onsubmit = function(check){ 5 alert(window.check); 6 return false; 7 }; 8}; 9</script> 10<form id="demo"> 11<input type="submit" value="demo"> 12</form>

投稿2016/11/16 05:59

編集2016/11/16 06:05
yambejp

総合スコア114833

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

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

arare000

2016/11/16 11:12

ありがとうございました。大変勉強になります。助かります。
guest

0

addEventListener で this オブジェクトに値を持たせる

function内の括弧にcheckが入ったままの状態がデフォルトで動かせない状況です。

動かせない理由が不可解ですが、変数名を変更できないなら外部から参照する方法を変えるしかないですね。
ただし、変数 check にイベントオブジェクトが入る事になって変数名と中身が一致しないのでとても分かりづらいコードだと思います。

HTML

1<form id="demo"> 2 <input type="submit" value="submit" /> 3</form> 4<script type="text/javascript"> 5'use strict'; 6document.getElementById('demo').addEventListener('submit', { 7 check: '0123456789', 8 handleEvent: function handleEvent (check) { 9 alert(this.check); // "0123456789" 10 alert(check); // "[object Event]" 11 check.preventDefault(); 12}}, false); 13</script>

Function.prototype.bind で第一引数に束縛する

あまりコードを変えたくないのなら、Function.prototype.bind で引数束縛する方法もあります。

JavaScript

1'use strict'; 2var check = '0123456789'; 3document.getElementById('demo').onsubmit = function (check, event) { 4 alert(check); 5 alert(event); 6 return false; 7}.bind(null, check); // Function.prototype.bind で第一引数を束縛

ただ、内容的に引数束縛しなければならない理由も見つからないので、「checkを動かせない理由」や背景を明らかにした方が良いと思います。

Re: arare17 さん

投稿2016/11/16 05:41

編集2016/11/16 06:11
think49

総合スコア18162

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

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

arare000

2016/11/16 11:12

ここまで詳細に書いていただきすみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問