Javascript对象属性不在范围内
我似乎对对象的属性范围有问题。 我想将每个Message
对象的title
和message
属性输出到select
元素,但它不工作 ! 我做错了什么
$(function(){ function Message(title, message) { this.title=title; this.message=message; this.getTitle = function(){ return this.title; }; this.getMessage = function(){ return this.message; }; } var messages = new Array( new Message("First Title", "This is the first message"), new Message("Second Title", "This is another message") ); function updateSelect () { $("#cannedMessages_button").empty(); for (c in messages) { // First try, with getters and setters $("#cannedMessages_button").append($('', { value : c.getMessage() , text : c.getTitle() })); // Second try, directly $("#cannedMessages_button").append($('', { value : c.message , text : c.title })); } } updateSelect(); });
我可以validationforeach实际上是在运行两次迭代,但我无法从对象中获取值。
不要for (c in messages
)。
in
用于迭代对象的属性,而不是迭代数组中的值。
使用经过validation的真实
for(var i = 0; i < messages.length; i++) { ... }
此外,您没有将getTitle
和getMessage
方法放在原型上,这有点浪费。
js中for in
循环的语法是:
for(var key in obj) { var currentElement = obj[key]; }