2014-02-05 7 views
0

Вопрос довольно тривиальный, как мне вернуть или передать значение вне функции?как вернуть/передать значение из функции javascript?

код ниже:

function numberOfDivs(){ 
var numberOfElements = $("#div").children().length; //this count how many divs exist 
return numberOfElements; 
} 

$("#element").click(function(){ 
    numberOfDivs(); 
    console.log(numberOfElements);// here I need to return the number but getting error :(
}); 

большое спасибо

+1

Это обратный вызов функции асинхронизации. Вы ничего не можете вернуть напрямую. –

+0

@medzi, это довольно простой материал, возможно, вы должны выбрать учебник и больше привыкнуть к языку. –

+1

@ Данило, где вы видите асинхронный звонок здесь? Это просто вопрос сохранения значения, возвращаемого 'numberOfDivs()'. –

ответ

2
$("#element").click(function(){ 
    var numberOfElements= numberOfDivs(); 
    console.log(numberOfElements); 
}); 
1
var numberOfElements;  
function numberOfDivs(){ 
    numberOfElements = $("#div").children().length; //this count how many divs exist 
      } 

    $("#element").click(function(){ 
      console.log(numberOfElements);// here I need to return the number but getting error :(
    }); 
2

Попробуйте

var numberOfElements= numberOfDivs(); 
console.log(numberOfElements); 

Поскольку функция должна возвращать значение, в то время как мы вызываем функцию мы присвоили переменная для захвата результата

1

Одним из способов является: определить numberOfElements в глобальном масштабе, как это:

var numberOfElements; 
function numberOfDivs(){ 
numberOfElements = $("#div").children().length; //this count how many divs exist 
return numberOfElements; 
} 

$("#element").click(function(){ 
    numberOfDivs(); 
    console.log(numberOfElements);// here I need to return the number but getting error :(
}); 

Или другой способ: присвоить результат в одной переменной и использовать его

$("#element").click(function(){ 
     var output = numberOfDivs(); 
     console.log(output);// here I need to return the number but getting error :(
    }); 
1

Попробуйте использовать функции обратного вызова, рассмотрим сценарий, в котором ваша функция numberofDivs требует времени, чтобы вернуть значение, оно не даст соответствующих результатов, поскольку Jquery является асинхронным. См. Эту демонстрацию для использования обратного вызова для возврата данных. CALLBACK DEMO

function AppendJson(callback) { 
    var numberOfElements = "AppendJson"; 
    callback(numberOfElements) 
} 


AppendJson(function (ReturnValue) { 
    alert(ReturnValue); 
}); 
Смежные вопросы