如何从jQuery函数中返回值?

3

我正在尝试从jQuery函数中返回值。这是我的函数:

 $('#output').keypress(function (event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
        var read_lines = $('#output').val().split("\n");

        return  read_lines[read_lines.length-1];

    } 
    });

我希望你能够将返回值保存在另一个变量中。
var newRead = functionName(event);
alert (newRead);

因为我无法访问函数,所以我该如何做呢?谢谢提前!


2
你不能从 事件处理程序的回调函数内部 返回一个值并期望它到达任何有用的地方。请解释代码的预期目标,以获取有关如何执行此操作的指针。 - iCollect.it Ltd
2个回答

2
在事件处理程序中,你应该调用其他函数而不是返回一个值。在你的事件处理程序中,function(){} 是一个回调函数。
在你的情况下,你可以直接在keypress事件中输出它们:
$('#output').keypress(function (event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
        var read_lines = $('#output').val().split("\n");

        alert(read_lines[read_lines.length-1]);
    } 
});

或者您可以这样做:
$('#output').keypress(function (event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
        var read_lines = $('#output').val().split("\n");

        MyFunction(read_lines[read_lines.length-1]);
    } 
});

function MyFunction(result){
      alert(result);
}

感谢@erkaner的帮助。我已经尝试了第一个版本,现在我尝试了第二个版本,但在我的情况下它仍然无法正常工作。这是我的演示(第93行)[链接](https://jsfiddle.net/orsina/k9e4nhnw/3/)。我正在尝试实现类似于C++中的cin函数(在我的情况下是read)。我之所以想从上面的函数返回一个值,是因为我想将这个值添加到变量的“pOut + ='"+ value +"';”中。如果我在函数内部添加值,我会在s变量的末尾得到返回的值。(当您输入smth并单击enter时打开的alert(s)窗口中可以看到它) - orsina
1
@orsina - 你已经得到了两个正确的答案,请听从它们。JavaScript并不像你希望的那样工作。你必须按照实际操作的方式来使用这种语言。当你进行任何类型的异步调用时,你不能只从函数中返回一个值 - 它不会去任何地方。你必须像这两个答案中所描述的那样使用回调函数或等效函数。 - Michael Geary
@Michael 谢谢。我现在正在使用它并尝试以那种方式进行更正。我真的认为这个答案是正确的。抱歉忘记接受,但是在我的真实示例之后我已经忘记了。 - orsina

1
为了访问您的读取值,您需要类似于以下的函数。
functionName(newRead){
   alert(newRead);
}
$('#output').keypress(function (event){ 
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){
        var read_lines = $('#output').val().split("\n");
         functionName(read_lines);
        //return  read_lines[read_lines.length-1];

    } 
    });

谢谢@askhokd。我在上面的评论中解释了我的问题。你能帮我解决这个问题吗? - orsina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接