【发布时间】:2017-08-14 07:55:56
【问题描述】:
编辑:为了清楚起见,我包含了更多代码 我已经使用构造函数创建了一个表来创建多个表体,但我不希望页眉和页脚重复,所以我分别创建了它们。但是,创建的属性之一是一个被填充的空数组。我目前无法访问它。
function Store(storeId, minCustomer, maxCustomer, avgSale) {
this.storeId = storeId;
this.minCustomer = minCustomer;
this.maxCustomer = maxCustomer;
this.avgSale = avgSale;
this.arrCookie = [];
this.addDom();
};
Store.prototype.addDom = function() {
this.cookiesPerHour();
var findTable = document.getElementById('table');
var tBody = document.createElement('tbody');
var trtBody = document.createElement('tr');
var tdstoreId = document.createElement('td');
tdstoreId.innerHTML = this.storeId;
findTable.appendChild(tBody);
tBody.appendChild(trtBody);
trtBody.appendChild(tdstoreId);
var totalStoreCookies = 0;
for (var i = 0; i < this.arrCookie.length; i++) {
var info1 = document.createElement('td');
info1.innerHTML = this.arrCookie[i];
trtBody.appendChild(info1);
};
for (var i = 0; i < this.arrCookie.length; i++) {
totalStoreCookies += this.arrCookie[i];
};
var info2 = document.createElement('td');
info2.innerHTML = totalStoreCookies;
trtBody.appendChild(info2);
};
function makeTHF() {
var totalCookies = 0;
var findTable = document.getElementById('table');
var tHead = document.createElement('thead');
var trtHead = document.createElement('tr');
var findTable = document.getElementById('table');
var tFoot = document.createElement('tfoot');
var trtFoot = document.createElement('tr');
var hourlyTotal = document.createElement('td');
findTable.appendChild(tHead);
tHead.appendChild(trtHead);
findTable.appendChild(tFoot);
tFoot.appendChild(trtFoot);
for (var i = 0; i < 17; i++) {
var time = document.createElement('th');
time.innerHTML = arrTime[i];
trtHead.appendChild(time);
};
for (var i = 0; i < arrCookie.length; i++) {
var storeName = [PDXAirport, PioneerSquare, Powells, StJohns, Waterfront];
hourlyTotal.innerHTML = 'Total';
var colTotal = 0;
for (var j = 0; j < storeName.length; j++) {
colTotal += storeName[j].arrCookie[i];
hourlyTotal.innerHTML = colTotal;
};
trtFoot.appendChild(hourlyTotal);
console.log(storeName);
};
};
var PDXAirport = new Store('PDX Airport', 23, 65, 6.3);
var PioneerSquare = new Store('Pioneer Square', 3, 24, 1.2);
var Powells = new Store('Powell\'s', 11, 38, 3.7);
var StJohns = new Store('St. John\'s', 20, 38, 2.3);
var Waterfront = new Store('Waterfront', 2, 16, 4.6);
makeTHF();
当我在 makeTHF 函数中尝试使用 arrCookie 时,当我尝试使用 arrCookies.length 作为“for”循环的指令时,我收到一条错误消息 undefined。放置“这个”。在它不改变结果之前。我想不出任何为什么这不起作用的原因。在原型函数期间正确填充了数组。为简洁起见,我删除了一些与问题无关的代码。
【问题讨论】:
-
“呼叫”?你的意思是访问?为什么不
this.arrCookie(其中this 是Store 的一个实例)? -
不清楚你在问什么。我建议发布“使用函数原型填充和随后的对象创建”的示例以及您期望如何访问该数组。 “正则函数”是什么意思?
-
我们称它们为属性值,无论是否在构造函数中。
-
@EvanTrimboli 不要忘记投票关闭...
-
感谢您的编辑。是的,没有全局
arrCookie变量。没有商店实例可以作为属性!您将不得不交换两个循环 - 迭代商店,然后为每个商店迭代其 cookie。只有这样你才能知道那个特定的商店有多少个cookie——全局长度变量没有任何意义。
标签: javascript