JavaScript webkit语法错误,在Firefox中正常工作;价值vs.引用
JavaScript webkit syntax error, work fine in Firefox; value vs. reference
我正在浏览DOM元素的集合,当找到标准时,DOM元素获得一个CSS类flashMe
添加到它。
CSS是一个1秒的动画-然后我使用setTimeout在1.5秒后删除CSS类。
如果我在循环中使用function (varCounter),它将使用varCounter引用,而不是value。所以我使用函数(passsedindex = varCounter)传递当前值,并在Firefox中工作得很好。
In WebKit (Chrome &Safari)相同的代码抛出:SyntaxError: Expected token ')'在第6行:function(pIndex=b)
var self=this;
for(var b=0;b<this.someDOMcollection.length;b++){
if(this.someDOMcollection[b].id==someCriteria){
this.someDOMcollection[b].classList.add('flashMe');
setTimeout(
function(pIndex=b){
self.someDOMcollection[pIndex].classList.remove('flashMe');
}
,1500);//end Timeout
break;
}//if
}//b
一种绕过它的方法是创建一个单独的函数,并传递它当前找到的索引值,但理想情况下,我希望将它保持在同一个块中。
Default values是ES6的扩展,目前只有Firefox支持。
见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/default_parameters
这里的简单解决方案是将值存储在闭包中:var self=this;
for(var b=0;b<this.someDOMcollection.length;b++){
(function(pIndex){
if(this.someDOMcollection[b].id==someCriteria){
this.someDOMcollection[b].classList.add('flashMe');
setTimeout(
function(){
self.someDOMcollection[pIndex].classList.remove('flashMe');
}
,1500);//end Timeout
break;
}//if
})(b);
}//b
function(pIndex=b){
是无效的JavaScript(尚未)。使用立即调用的函数表达式(IIFE),而不是:
(function(pIndex){ // Accept a parameter, named `pIndex`.
setTimeout(function(){
self.someDOMcollection[pIndex].classList.remove('flashMe');
}, 1500);
})(b); // Pass `b` to the inner function.
相关文章:
- 将函数引用存储在散列中在javascript中无法正常工作
- 当我移动引用three.js的html文件时,three.js停止工作
- 对象引用的隐式传递是如何工作的
- 这些变量引用如何工作
- (谷歌API)单元格引用中的动态工作表和工作表创建脚本的名称
- 对象引用如何在 javascript 内部工作
- JavaScript img onclick 引用错误才能正常工作
- 不确定文档引用器是否正常工作
- Jasmine spyOn:当传递间谍函数引用时如何使其工作
- Zingchart:可以'你不能让它工作吗?引用错误:未定义zingchart
- 通过引用传递数组不是't工作
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 当在html中引用jsx文件时,React渲染方法不工作
- JavaScript webkit语法错误,在Firefox中正常工作;价值vs.引用
- javascript对象引用不工作的getElementById
- Ng-grid不能与文件引用的单元格模板一起工作
- 如何引用文档.在React组件中工作
- Javascript AMCharts通过ID引用图形不工作
- 无法使引用标头工作
- 函数正向引用工作异常