Javascript 无法访问jQuery.each中的变量
以下是我的一个对象中的函数:Javascript 无法访问jQuery.each中的变量,javascript,jquery,Javascript,Jquery,以下是我的一个对象中的函数: updatePorts: function(nodeKey, portOptions, portArrays) { var showing_ports = false; $('#ports li').removeClass('active').hide(); $('#ports .tab-pane').removeClass('active in'); $.each(portOptions, function(side, options) {
updatePorts: function(nodeKey, portOptions, portArrays) {
var showing_ports = false;
$('#ports li').removeClass('active').hide();
$('#ports .tab-pane').removeClass('active in');
$.each(portOptions, function(side, options) {
if (options.editable) {
$('#ports [href="#'+side+'"]').closest('li').show();
if (!showing_ports) {
$('#ports [href="#'+side+'"]').closest('li').addClass('active');
$('#ports #'+side).addClass('active in');
}
$.each(portArrays[side], function(i,port) {
//do stuff
}
showing_ports = true;
}
})
}
我的问题是在$之外。每个
循环I都可以访问作为参数传递到函数中的portarray
变量。但是,我无法访问$中的相同变量。每个
循环
我做错什么了吗?如何访问循环中的变量
更新:在实际访问Portarray的位置添加了代码Portarray
是在您使用它的位置定义的,但您使用了错误的索引。side
变量是portOptions
的索引,而不是portarray
它应该有什么索引?如果这两个数组以相同的索引值并行运行,这通常是一个坏主意-最好使用单个对象数组-至少需要在代码中记录
顺便问一下,JS控制台中的确切错误消息是什么?如果我的猜测不正确,错误消息将提供线索 我在主题中描述了这个问题,但是询问者似乎在代码的其他地方遇到了问题。我的代码类似于下面的代码,我无法从
此
访问我想要的内容。第一个日志可以工作,但each循环中的日志未定义。我现在意识到,在使用jquery时,这个
会被重新分配-
我已改为使用for。。在
中迭代我的this.data对象并使其工作。希望这能帮助别人
List.prototype.updateList = function(search) {
console.log(this.id);
for(var key in this.data){
console.log(this.id); //hooray
}
}
您的代码没有显示错误案例。您没有在每个循环中访问portOptions,那么我们如何判断您的代码出了什么问题?没有理由不能在每个循环中访问PortArray我添加了一些访问PortArray的代码。我将看看是否可以在JSFIDDLE中重新创建我的问题。您必须启动调试器,并查看第一个
块中的portArrays
值。我做到了。当它位于每个块的第一个内部时,它是未定义的。在第一个块之前,它是一个对象。在JSFIDLE中重写代码之后,一切似乎都正常工作。不知道发生了什么事。
List.prototype.updateList = function(search) {
console.log(this.id);
for(var key in this.data){
console.log(this.id); //hooray
}
}