我正在尝试开始学习OO JS并且有一个简单的问题(我已经简化了我的实际问题)。
基本上,以下警告只返回[Object object],我希望它返回3个不同的警告框
<body>
<div id="bob">
<div>f</div>
<div>t</div>
<div>q</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var Person = {
name: $('#bob div').each(
function(){
$(this).text();
}
)
}
alert(Person.name);
});
</script>
</body>
非常感谢任何指导。
阿迪。
答案 0 :(得分:0)
也许你可以这样做:
var Person = {
alertNames: function() {
$('#bob div').each(
function(){
alert($(this).text());
}
);
};
}
Person.alertNames();
请注意,在以大写字母开头的JavaScript名称中(在这种情况下,Person
)通常是为构造函数保留的(即用于创建新实例的函数)使用new
关键字)。这些通常称为类型,因为名称类会产生误导。
如果你想让你的代码真正面向对象,你可以试试这样的东西:
var Person = function(name) {
var container = $('#' + name);
this.alertNames: function() {
$('div', container).each(
function(){
alert($(this).text());
}
);
};
}
var bob = new Person('bob');
bob.alertNames();
推荐阅读:
答案 1 :(得分:0)
在javascript alert
框中不是您返回的内容。这是你打电话的东西,它会弹出警报。因此,如果您需要3个警报,则需要调用alert
函数3次。目前你只打电话一次。
我怀疑你正在尝试的是连接选择器的结果。在这种情况下,请使用.map
代替.each
:
var Person = {
name: $('#bob div').map(function() {
return $(this).text();
}).get().join(',')
};
alert(Person.name);
另一种可能性是将警报放在.each
回调中。