我有一个看起来像这样的小脚本:
hideElements = arguments.shift().split ( ',' );
for ( iterator in hideElements ) {
console.log (' --> hiding ' + hideElements[iterator] );
lg_transitions ( {kind:"slide-up"} , { target : hideElements[iterator] } );
}
当我在调试器中运行它时,所有事情都非常合理地开始。我在上面列出的第一行放置了一个断点。按下“跳过下一个函数调用”按钮后,将“hideElements”变量初始化为以下内容:
这是我所期望的,但是在完成第一次(并且应该是唯一的)迭代之后,它又回到了循环的头部,并且从 0 开始的“迭代器”现在奇怪地变成了“删除” . 嗯?不知道那是从哪里来的。但在随后的 console.log 消息中可能会有提示......它将以下内容打印到控制台:
这是一个叫做——你猜对了——“remove”的函数。这是我最近出于不同原因添加的一个函数,但它没有被直接或间接调用,所以我不知道为什么会在这里使用它。对于任何对“删除”的完整代码感兴趣的人,这里是:
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
}
添加:
我之前忽略添加的代码是参数数组的初始化。这是我所拥有的(注意我已经将名称改为“args”而不是参数):
function ConditionalFormatting ( key , eventObject , setOfRules ) {
console.log ("Entering conditional formatting: key is " + key + ", eventObject is " + eventObject.attr('id') + ", setOfRules is " + setOfRules );
var ruleStrings = [];
ruleStrings = setOfRules.split (';');
var targetOverride = false;
jQuery.each ( ruleStrings , function ( i , ruleString ) {
// There is a rule, now let's find out which one
var targetElement;
var args = [];
args = ruleString.split('::');
var rule = args.shift();