簡體   English   中英

jQuery-在輸入字段上使用它-無法使變量超出功能范圍,因此我可以使用它

[英]jquery - using it on an input field - can't get variable out of function so I can use it

第一次嘗試在真實的網頁上使用jQuery課程時,我發現該函數完成后變量guess (在此內部函數的范圍內)消失。

我想這是正常的javascript行為,但是通常如何抓住變量,以便可以在其他函數中使用它呢? 我的課程從未涵蓋過。

我以為一旦guess被路由到#display的innerHTML中,它就會堅持下去。 但是它甚至從那里消失了。

<!DOCTYPE html>
<html>
    <HEAD>
        <title>Game of the Century</title>
        <meta charset="UTF-8">
        <LINK href="reset.css" rel="stylesheet" type="text/css">
        <LINK href="main.css" rel="stylesheet" type="text/css">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript" src="application.js"></script>
    </HEAD>

    <body>
        <form>
            <input type='text' name = "input" id = "input"><br>
            <input type='submit' id="submit">
        </form>
        <p id = "display"></p>   
        <div>
            <img src="http://img707.imageshack.us/img707/2403/rj1a.jpg" alt = "ad">
        </div>
    </body>
</html>

...

$(document).ready(function () {

        $('#submit').click( function() { 
              var guess = $('#input').val();
              $("#display").html(guess);
         });   

});

這絕對是正常的,與jQuery無關。 您的guess變量是在閉包匿名函數中定義的。 因此,它存在於此,並且在該范圍之外無法訪問。 如果要在點擊處理程序之外使用guess ,只需在外部定義它即可。 例如:

$(document).ready(function () {
    var guess;
    $('#submit').click( function() { 
        guess = $('#input').val();
        $("#display").html(guess);
    });   
    var anotherMethod = function() {
        alert(guess); // <--- it works
    }
});

另外,如果您已經包含jQuery,則無需使用document.getElementById

編輯:我剛剛看到的html。 該代碼還有另一個副作用。 當您單擊按鈕時,您的表單實際上正在提交。 嘗試將type="submit"更改為"type="button"或其他防止表單提交的方法。

就在這里我的解決方案可能具有更好的讀寫任務分離

    $(document).ready(function () {

        getMyHtml = function() {
            return $('#input').val();
        }

        setMyHtml = function () {
            var s = getMyHtml();
            $("#display").html(s);
        }

        $('#submit').click(setMyHtml);
    });   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM