Как написать функцию jQuery / JS, чтобы она возвращала значение? - PullRequest
0 голосов
/ 30 сентября 2011

Как мне написать функцию jQuery, чтобы она возвращала значение, к которому я могу получить доступ вне функции?Я сделал что-то вроде этого, но когда я попытался получить доступ к нему за пределами функции, он говорит "undefined":

$(document).ready(function(){
    function add(y, z) {
        $('p').click(function() {
            x = y + z;
            console.log(x); // shows 3
            return x;
        });     
    }

    var sum = add(1, 2);

    console.log(sum); // shows "undefined"
});

Ответы [ 5 ]

4 голосов
/ 30 сентября 2011

Это должно работать.Не уверен, почему вы добавили событие click туда

$(document).ready(function(){
    function add(y, z) {
        x = y + z;
        console.log(x); // shows 3
        return x;
    }
    var sum = add(1, 2);

    console.log(sum); 
});
2 голосов
/ 30 сентября 2011
function add(y, z) {
   $('p').click(function() {
        x = y + z;
        console.log(x); // shows 3
        return x;
    });   
    return y + z;
}
2 голосов
/ 30 сентября 2011

Простой ответ - вы не можете.

Метод , зарегистрированный с помощью .click(), вызывается асинхронно как часть цикла событий Javascript.

Ваша add функция имеет нет возвращаемого значения вообще.

Если вместо этого вы пытаетесь создать функцию стиля jQuery *1013*, а не метод, который воздействует на элементы , вы должны сделать это:

(function($) {
     $.add = function(y, z) {
         return y + z;
     }
})(jQuery);

использование:

var x = $.add(1, 2);
0 голосов
/ 30 сентября 2011

Я не знаю, почему в функцию добавлено событие click. Это должно быть обработано отдельно. Код должен выглядеть так, как мне кажется.

$(document).ready(function() {
function add(y, z) {
    var x = y + z; // good to make it local scope
    console.log(x); // shows 3
    return x;
}
var sum = add(1, 2);
document.write(sum); // shows "undefined"
});
0 голосов
/ 30 сентября 2011

В этом случае функция является анонимной функцией обратного вызова, которая вызывается при возникновении события click. То, как вы его настраиваете, что функция add(x, y) делает, это создает новый обработчик для событий клика по тегам

.

...