[英]What's wrong in my JavaScript code?
我无法弄清楚出了什么问题。
var CarObj = function(passengers, maxLoad, wheels, doors, maxSpeed) {
this.passengers = passengers;
this.maxLoad = maxLoad;
this.wheels = wheels;
this.doors = doors;
this.maxSpeed = maxSpeed;
};
var ferrari = new CarObj(4, "700kg", 4, 2, "360km/h");
var output = new Array();
for (var i = 0; i < ferrari.length; i++) {
for (var a in ferrari) {
output[i] = a;
}
}
document.getElementById('ELEMENTHERE').innerHTML = (output.join(" "));
for (var i = 0; i < ferrari.length; i++) {
ferrari
不是一个阵列,但你试图像它一样访问它。 拆下它及其相应的端部支撑。
你也应该改变output[i] = ...;
to output.push(...);
或output[output.length] = ...;
,这将消除手动增加i
需要。
从我所看到的,你for...in
被遍历同一个对象,外for
是。 如果ferrari
有一个长度,这将把每个output
项设置为ferrari
的最后一个键 - 如果没有,则将错误提供给未定义的属性。
您可能想要做的事情:
for (var a in ferrari) {
output[output.length] = a; // or ferrari[a] if you wanted values, not keys
}
并完全摆脱外部for
循环。
for (var i in ferrari) output.push(ferrari[i]);
这样做会更健壮:
for (var i in ferrari)
if (ferrari.hasOwnProperty(i))
output.push(ferrari[i]);
你的意思是
i = 0;
for (var a in ferrari) {
output[i++] = a;
}
? 法拉利没有长度属性。
ferrai是一个Object,它没有按名称长度的属性(数组有)。 将您的代码更改为:
<script type="text/javascript">
var CarObj = function(passengers, maxLoad, wheels, doors, maxSpeed) {
this.passengers = passengers;
this.maxLoad = maxLoad;
this.wheels = wheels;
this.doors = doors;
this.maxSpeed = maxSpeed;
};
var ferrari = new CarObj(4, "700kg", 4, 2, "360km/h");
var output = new Array();
var i=0;
for (var a in ferrari)
{
output[i] = a;
i++;
}
document.getElementById('ELEMENTHERE').innerHTML = (output.join(" "));
</script>
为什么不直接覆盖对象的toString()?
var CarObj = function(passengers, maxLoad, wheels, doors, maxSpeed) {
this.passengers = passengers;
this.maxLoad = maxLoad;
this.wheels = wheels;
this.doors = doors;
this.maxSpeed = maxSpeed;
this.toString = function() {
return this.passengers + " " + this.maxLoad + " " + this.wheels + " " + this.doors + " " + this.maxSpeed;
};
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.