JavaScript模块.单击时递增数组
JavaScript Module. Increment array on click
我正在努力理解JavaScript模块。因此,我使用的是这种模式,或者至少我认为单击时循环遍历数组就是这种模式。
每次单击都应显示数组中的下一个值。
当达到数组中的最后一个值并且再次注册单击时,循环应该重新开始。
页面将加载,在数组的开头显示值。
例如,数组包含["绿色"、"黄色"、"红色"]
页面加载=显示的值为绿色
点击=显示的值为黄色
点击=显示的值为红色
点击=显示的值为绿色
等等
以下是我迄今为止所掌握的信息:http://jsfiddle.net/TYj3p/
这是HTML:
<p>The color is <span id="print"></span>.</p>
这是我的JavaScript,但我在点击部分很糟糕:
var s;
var ele;
Next = {
settings : [
{color : 'green'},
{color : 'yellow'},
{color : 'red'}
],
elements : {
span : $('#print')
},
init : function() {
//kick things off
s = this.settings;
ele = this.elements;
this.bindUIActions();
},
bindUIActions : function() {
ele.span.ready(function() {
Next.loadText();
});
ele.span.on('click', function() {
Next.changeText();
});
},
loadText : function() {
ele.span.text(s[0].color);
},
changeText : function() {
var i = 0;
ele.span.text(s[i].color);
i++;
}
};
(function() {
Next.init();
})();
看看这个演示:http://jsfiddle.net/TYj3p/7/
在onClick方法上添加一个按钮并调用changeText。
<button onclick="Next.changeText();">Click</button>
在您更改Text函数时,检查当前颜色的索引,如果它是最后一个元素,则显示第一个元素。你的changeText函数应该是这样的:
changeText : function() {
var index = Next.indexOfColor(ele.span.text());
if(index < s.length-1) {
++index;
ele.span.text(s[index].color);
} else {
ele.span.text(s[0].color);
}
},
添加此函数可返回当前颜色的索引值。
indexOfColor: function (color) {
for(var i=0; i < s.length; i++) {
if(s[i].color == color)
return i;
}
return -1;
}
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 如何从NodeJS中的模块返回数组
- 使用RequireJS从数组动态加载模块
- 奇怪的壁虎行为(试图在js模块之间传递一个nsiDomWindows数组)
- SpringMVC如何从表单子模块上的JS数组填充部分模型
- JavaScript模块.单击时递增数组
- NodeJS模块填充的数组变成空对象.为什么
- 让app.js中的数组在模块中可用
- 从另一个模块中修改模块中的数组
- 如何在Node模块之间共享数组状态