如何从JavaScript函数中获取值
How to get a value out of a JavaScript function?
我需要从JavaScript函数中获取行号:
function cap_check(){
var row;
$('td').change(function(){
row = $(this).parent().parent().children().index($(this).parent());
alert(row);
});
alert(row);
}
在功能中,row
会被正确提醒。在函数之外,它是undefined
。
调用cap_check
不可能向undefined
以外的任何其他对象发出警报。函数不是静态对象。当您调用一个函数时,它会在内部堆栈上创建一个新实例。row
将初始化为undefined
,并且一个新的单击处理程序将绑定到td
元素(也不太可能有用,因为每次调用cap_check
时都会绑定另一个重复的事件处理程序)。
很可能,你想要这样的东西:
var cap_check=(function() {
var row;
$('td').change(function(){
row = $(this).parent().parent().children().index($(this).parent());
alert(row);
});
return function() {
alert(row);
};
}());
这是一个自我执行的功能。当脚本运行时,函数中"返回"之前的部分会立即执行,创建一次事件绑定,并返回一个引用原始函数实例的函数。这将创建一个闭包,这意味着函数维护对其父对象(在本例中为row
变量)的引用。因此,您的事件处理程序和作为cap_check
返回的函数现在将始终引用row
的同一实例。
因此,现在任何调用cap_check
的代码都将始终返回作为change
事件结果分配的相同值。
Fiddle:
http://jsfiddle.net/RagUe/5/
(请注意,我将事件更改为"单击"而不是"更改",以使其易于测试)。
是否应该将函数的剩余部分保留在更改函数中?
function cap_check(){
var row;
//-----------------------Jquery current table row
$('td').change(function(){
row = $(this).parent().parent().children().index($(this).parent());
//rest of script here
});
}
$('td').change(function(){ })
Change允许您传递一个回调,该回调将在值更改时运行。
因此,仅仅通过附加回调,它不会运行它。它只会在值更改时运行。由于函数的其余部分在值更改之前运行,因此row
的值未定义。
只需将脚本的其余部分放在回调中
函数内部的row
与外部的行处于完全不同的范围。
因此,当您在change()
函数之外时,row
是未定义的,但一旦触发change
,row
就会得到一个值
function cap_check(){
var row;
$('td').change(function(){
row = $(this).parent().parent().children().index($(this).parent());
alert(row); //only has a value on change
});
alert(row); //undefined
}
- Javascript:如何获取函数.apply()的键
- 如何在 JavaScript 中获取函数体文本
- 从函数内部获取函数的名称
- 从字符串的 JS 函数中获取函数参数
- 获取函数中按钮的名称
- 在其参数中获取函数本身
- 如何获取函数元素中的值
- 获取函数原型的源代码
- javascript:获取函数's变量's在另一个函数中的值
- 无法获取函数的ajax回调
- Javascript通过名称获取函数
- 如何获取函数参数值
- 使用Rhino从已评估的JS中获取函数名及其参数
- 获取函数jQuery设置的属性
- 获取函数的arity
- AJAX请求在jQuery中获取函数,变量问题
- 获取函数的表单隐藏变量
- 如何从外部JavaScript文件获取函数参数
- 不要在 Codeigniter 中获取函数参数
- 客户端 JavaScript 从服务器端文档集和获取函数接收过时的值