对象上的JavaScript递归永远不会结束
javascript recursive on object never ends
我的递归函数无法正确循环时遇到问题,底部是我遇到问题的代码,之前的东西只是为了表明我已经做了很多工作:)还有一个工作示例的链接。我之前使用了很多嵌套的 for 循环,如下所示:
function assembleTimeline(targetItem, sequence) {
var TIMELINE = "";
var greenAniArray = {options:{}};
for (S = 0; S < sequence.length; S++) {
greenAniArray = [];
for (L = 0; L < sequence.length; L++) {
alength = greenAniArray.length;
for (var setting in sequence[S][L]) {
greenAniArray.push({});
if (setting == "duration") {
greenAniArray[alength]["duration"] = sequence[S][L][setting];
delete sequence[S][L]["duration"];
}else{
greenAniArray[alength].push({});
for (var option in sequence[S][L][setting]) {
greenAniArray[alength]["options"][option] = sequence[S][L][setting][option];
}
}
if (greenAniArray[alength]["options"]) {
delete greenAniArray[alength]["options"]["duration"];
}
$(".jsonresults").html(prettyPrint(greenAniArray));
}
}
animationSequence = greenAniArray[alength]["options"];
animationDuration = greenAniArray[alength]["duration"];
// Make commands look like this:
// to($box, 1, {x:50,y:0})
assembledTimeline += '.to("' + targetItem + '", ' + animationDuration + ', ' + JSON.stringify(animationSequence) + ')';
}
TIMELINE= "tl" + assembledTimeline;
};
当有人建议递归函数时,可以解决这个问题,但是"序列"是一个数组,可以有一个项目,也可以有几十个项目。我正在将它放在一起以接受来自数组/对象的信息,其中包含我制作的动画序列:http://codepen.io/ajhalls/pen/QbvRbQ
http://codepen.io/ajhalls/pen/bdrmGw?editors=101
$(function() {
var target = "targetDiv"
var aniMation = "";
var sequence = [{
"duration": ".2",
"transform": "translate3d(0,0,0)"
}, {
"duration": ".2",
"transform": "translate3d(0, -30px, 0)"
}, {
"transform": "translate3d(0, -15px, 0)",
"duration": ".2"
}, {
"transform": "translate3d(0,-4px,0)",
"duration": ".2"
}];
function parseAnimation(target, sequence, count = 0) {
for (var property in sequence) {
duration = sequence[property]["duration"];
delete sequence[property]["duration"];
aniSequence = sequence[property];
//$(".output").text(JSON.stringify(aniSequence));
aniMation += '.to("' + target + '", ' + duration + ', ' + aniSequence + ')';
$(".output").text(aniMation);
parseAnimation(target, sequence[property], count++);
}
}
parseAnimation(target, sequence);
});
您不需要对示例中的序列进行递归。 如果你有包含序列的序列,那么你将需要递归。
$(function() {
var target = "target"
var aniMation = "tl";
var sequence = [{
"duration": ".2",
"transform": "translate3d(0,0,0)"
}, {
"duration": ".2",
"transform": "translate3d(0, -30px, 0)"
}, {
"transform": "translate3d(0, -15px, 0)",
"duration": ".2"
}, {
"transform": "translate3d(0,-4px,0)",
"duration": ".2"
}];
function parseAnimation(target, sequence)
{
for (var property in sequence)
{
var s = sequence[property];
var aniSequence = { "transform": s["transform"], "duration": s["duration"] };
aniMation += '.to("' + target + '", ' + s.duration + ', ' + JSON.stringify(aniSequence) + ')<br>';
$("#output").html(aniMation);
}
}
parseAnimation(target, sequence);
});
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 循环结束/推送到数组之前在页面上呈现EJS
- 在另一个函数成功结束后调用该函数
- 在动画结束之前调用函数
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 使用nunjucks时发生块结束错误
- 成功回调永远不会被JSONP请求调用
- HTML5获取弧的坐标's结束
- 内容结束时停止无限滚动
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 如何在视频上显示海报图像使用Jquery结束
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- 处理第三方库发送的ajax请求的开始和结束事件
- 结束后Javascript倒计时计时器重定向
- 为什么这个简单的脚本永远不会结束
- Javascript-Can'我不能让我的程序运行——循环永远不会结束
- Excel任务窗格绑定数据更改事件永远不会结束
- 茉莉“期望”永远不会错在超级代理“结束”
- jQueryajax调用永远不会结束(成功和错误回调不会触发)
- 对象上的JavaScript递归永远不会结束