1

StackOverflow
には、次 のような参照がいくつかあり ます。


私は無礼に私のコードを以下にドロップするつもりです。ごめんなさい。

予想される動作:
何かが入力されたときに、コンソールはテキストエリアの値を返す必要があります。

実際の動作:
コンソールは"(an empty string)" を返します。 .val() を取得しようとしている行の代わりに
書くと、完全に機能します。msg = "This IS going through";関数はその「msg」変数を問題なく渡します。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>why oh why</title>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

        <script type="text/javascript">
            $(function(){

                msg = $(".mymsg").val();
                $('.hitme').on("click", {param1: msg}, sendNotif);

                function sendNotif(event) {
                    msg = event.data.param1;
                    console.log(msg);
                }

            });
        </script>
     </head>
<body>


<textarea class="mymsg" cols="5" rows="10"></textarea>
<span class="hitme">click here</span>


</body>
</html>
4

3 に答える 3

3

onloadの値を取得しているため、var msgは空になります。ページをロードするときではなく、イベントをクリックするときに値を取得する必要があります。

于 2013-01-31T18:20:12.533 に答える
2

問題は、ページロードハンドラーが起動msgしたときに一度だけ設定されることです。$(function() { … })その行は二度と実行されません。コードを次のように変更します。

$('.hitme').on("click", {param1: $(".mymsg").val()}, sendNotif);
于 2013-01-31T18:19:41.033 に答える
1

イベントがトリガーされたときにmymsgの値を抽出する必要があります。私はそれを次のようにします:

$(".hitme").click(function() {
  console.log( $(".mymsg").val() );
});
于 2013-01-31T18:18:31.287 に答える