gpt4 book ai didi

javascript - 如何使用客户 JavaScript 在表格列表中创建

转载 作者:行者123 更新时间:2023-11-30 20:26:30 25 4
gpt4 key购买 nike

你好,我对 JavaScript 有很大的疑问,我是初学者,我想创建包含人员和产品列表的简单列表。所以我创建了名称客户、产品列表,这是购物,但我想在表格中显示每个人可以买什么,以及他将花多少钱:

更新后我的代码:

<!DOCTYPE html>
<html>
<head>
<title>!DOCTYPE</title>
<meta charset="utf-8">
</head>
<script>

var buyerList = [];
buyerList[0] = createBuyer('Jon', 20000)
buyerList[1] = createBuyer('Will', 25000)
buyerList[2] = createBuyer('Tom', 10000)

var productList = [];
productList[0] = createProduct('mp3', 3500)
productList[1] = createProduct('Meizu', 9000)
productList[2] = createProduct('Iphone', 25000)
productList[3] = createProduct('Philips', 16000)

var buyer;

for (var i = 0; i < buyerList.length; i++) {
buyer = buyerList[i];
buyer['basket'] = shoping(buyer['wallet'])
}

showResult(buyerList);

/***********LIBRARY**************/

function createBuyer(arg_name, arg_wallet, arg_gender = 'boy') {
if (arg_wallet < 0)
arg_wallet = 0
return {
name: arg_name,
wallet: arg_wallet,
gender: arg_gender
}
}

function createProduct(arg_name, arg_price) {
return {
name: arg_name,
price: arg_price
}
}

function shoping(wallet) {
var tovar;
var basket = [];
for (var i = 0; i < productList.length; i++) {
tovar = productList[i];
if (wallet > tovar['price']) {
basket.push(tovar);
wallet -= tovar['price']
}
}

return basket;
}

function showResult(buyerslist) {
var result = '<table align="center" width="400" bgcolor="#ffcc00">';
for(buyer of buyerslist){
var rowspan=Object.keys(buyer.basket).length+1;
result+='<tr><td rowspan='+rowspan+'>'+buyer.name+'</td>';
result+='<td rowspan='+rowspan+'>'+buyer.wallet+'</td>';
result+='<td rowspan='+rowspan+'>'+buyer.gender+'</td></tr>';
for(var item of buyer.basket){
result+='<tr><td>'+item.name+'</td><td>'+item.price+'</td></tr>';
}
}
result+='</table>';
document.getElementById("details").innerHTML=result;
}
</script>
<body>
<div id="details">

</body>
</html>

如您所见,函数 showResult 不正确,我真的很难找到解决方案。在 func showResult 中,我想获取包含客户列表、他们可以购买的产品以及他们将花费多少钱的表格

最佳答案

而不是用document.write来写内容每次调用它时都会覆盖页面内容。您需要创建一个 HTML 元素,向其附加一些内容,然后将其附加到文档。

这里是你如何做到的:

  1. 使用方法 .createElement 创建一个 HTMLElement 类型的新对象:

    const element= document.createElement('div')
  2. 通过访问属性 .innerHTML 用 HTML 字符串填充元素你的元素:

    element.innerHTML = "<div>Some more html</div>"
  3. 完成表格填充后,将元素追加到现有 DOM 元素

    document.querySelector('body').appendChild(element)

考虑到这一点,我们可以在 HTML 表格中显示所有对象:

  1. div 标签创建一个新的 HTML 元素并将其保存在变量 table 中:

    const table = document.createElement('div');
  2. 使用 .reduce 准备表格的内容数组上的方法。

    const tableContent = list.reduce((string, e) => string + `
    <tr>
    <td>${e.name}</td>
    <td>${e.wallet}</td>
    <td>${e.gender}</td>
    </tr>
    `, '');
  3. 将内容添加到表格的innerHTML属性:

     table.innerHTML = `
    <table align="center" width="800" bgcolor="#ffcc00">
    <tr><th>Name</th><th>Name</th><th>Gender</th></tr>
    ${tableContent}
    </table>
    `;
  4. 将表格附加到正文:

    document.querySelector('body').appendChild(table)

完整代码如下:

var buyerList = [];
buyerList[0] = createBuyer('Jon', 20000)
buyerList[1] = createBuyer('Will', 25000)
buyerList[2] = createBuyer('Tom', 10000)

function createBuyer(arg_name, arg_wallet, arg_gender = 'boy') {
return {
name: arg_name,
wallet: (arg_wallet < 0) ? 0 : arg_wallet,
gender: arg_gender
}
}

showResult(buyerList);

function showResult(list) {

const table = document.createElement('div');
const tableContent = list.reduce((string, e) => string + `
<tr>
<td>${e.name}</td>
<td>${e.wallet}</td>
<td>${e.gender}</td>
</tr>
`, '');

table.innerHTML = `
<table align="center" width="800" bgcolor="#ffcc00">
<tr><th>Name</th><th>Name</th><th>Gender</th></tr>
${tableContent}
</table>
`;

document.querySelector('body').appendChild(table)

}
td {
text-align: center;
}


如果你不知道.reduce好吧,这是使用 .forEach 的替代方法循环:

let HTMLString = '';
list.forEach(e => HTMLString + `
<tr>
<td>${e.name}</td>
<td>${e.wallet}</td>
<td>${e.gender}</td>
</tr>
`);

关于javascript - 如何使用客户 JavaScript 在表格列表中创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50855209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com