

以下の様なコードで関数の戻り値を受け取ることが出来ません。イベントが発生したら関数を実行して戻り値を受け取りたいのですが、戻り値を受け取る方法が思い着きません。素人なので、発想自体が間違ってかもしれないです。ご教授お願いします。

[code]

    <script>
    function test(e){
        var hoge = 1;
        return 1;
    }
    document.addEventListener(‘change’,test,false);
    </script>
    
[/code]


CC BY-SA 4.0
2019-01-12T14:39:51.677
51923
2022-05-15T05:00:05.063
2019-01-12T16:55:41.650
3060
31772
question
javascript
addeventlistnerで指定した関数から戻り値を受けた取りたい。


残念ながら、おっしゃる通り、発想自体が間違っています。addEventListenerで指定した関数から戻り値を受け取ることはできません。  
addEventListenerに指定した関数で戻り値を返す代わりに、その場で（今の例だと`test`内で）値を使用して処理を行ってしまう必要があります。

どうすればいいか分からない場合、もっと具体的な状況を質問していただければ解決策が回答されるかもしれません。


CC BY-SA 4.0
2019-01-12T16:18:52.510
51924
2019-01-12T16:18:52.510
30079
51923
answer


listener関数は非同期関数なので、`return` 文を使っても返り値を受け取れません。  
JavaScriptでは非同期処理の完了はコールバック関数で受け取る必要があります。

[code]

    'use strict';
    function handleChange (event) {
      foo(event.target.value);
    }
    
    function foo (v) {
      console.log(v);
    }
    
    document.addEventListener('change', handleChange, false);
[/code]

[code]

    <select><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select>
[/code]

Re: Sogeking さん


CC BY-SA 4.0
2019-01-14T15:22:54.543
51972
2019-01-14T15:22:54.543
20262
51923
answer