关于,我不知道如何在它所属的部分中输入表格。如您所见,它使我一个接一个地打印,我想在创建的“ tr”和这么多“ td”中创建输入字段中有多少字段。他使用此代码创建“ tr”,并且其中只有一个“ td”,因此对于两个输入字段,但是我想为每次单击创建一个“ tr”,其中两个字段分别放置在“ td”中
public class ViewModel : INotifyPropertyChanged
{
private ObservableCollection<string> _monthDaysList;
public ObservableCollection<string> MonthDaysList
{
get { return _monthDaysList; }
internal set { _monthDaysList = value; OnPropertyChanged(); }
}
private string _selectedMonthDay;
public string SelectedMonthDay
{
get { return _selectedMonthDay; }
internal set { _selectedMonthDay = value; OnPropertyChanged(); }
}
public void GetMonths()
{
MonthDaysList = new ObservableCollection<string>();
if (MyConceptItems != null && MyConceptItems.Any())
{
foreach (var item in MyConceptItems)
{
MonthDaysList.Add(item.DateColumn);
}
SelectedMonthDay = MonthDaysList[0];
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
const form = document.querySelector('form');
const table = document.querySelector('tbody');
const button = document.querySelector('#clear-button');
const inputName = document.getElementById('name');
const inputAge = document.getElementById('age');
// Zamenjuje if..else (if = ?) (else = :)
let itemsArray = localStorage.getItem('items') ? JSON.parse(localStorage.getItem('items')) : [];
localStorage.setItem('items', JSON.stringify(itemsArray));
const data = JSON.parse(localStorage.getItem('items'));
const thMaker = (text) => {
const tr = document.createElement('tr');
const td = document.createElement('td');
td.innerHTML = text;
table.append(tr);
tr.appendChild(td);
// var row = table.insertRow(-1);
// var cell1 = row.insertCell(0);
// var cell2 = row.insertCell(1);
// cell1.innerHTML = text;
// cell2.innerHTML = text;
}
form.addEventListener('submit', function (e) {
e.preventDefault();
itemsArray.push(inputName.value);
itemsArray.push(inputAge.value);
localStorage.setItem('items', JSON.stringify(itemsArray));
thMaker(inputName.value, inputAge.value);
inputName.value = "";
inputAge.value = "";
});
data.forEach(item => {
thMaker(item);
});
答案 0 :(得分:1)
您必须保存对象数组,而不是简单的数组。
像这样:
let itemsArray = [{name:“ Pippo”,age:“ 12”},{“ name”:“ Pluto”,“ age”:“ 20”}];
我从解决方案中删除了localStorage以便在代码段中工作。
const form = document.querySelector('form');
const table = document.querySelector('tbody');
const button = document.querySelector('#clear-button');
const inputName = document.getElementById('name');
const inputAge = document.getElementById('age');
// Zamenjuje if..else (if = ?) (else = :)
let itemsArray = [{name: "Pippo", age: "12"},{"name": "Pluto", "age": "20"}];
const data = itemsArray;
const thMaker = (item) => {
const tr = document.createElement('tr');
table.append(tr);
const td1 = document.createElement('td');
td1.innerHTML = item.name;
tr.appendChild(td1);
const td2 = document.createElement('td');
td2.innerHTML = item.age;
tr.appendChild(td2);
}
form.addEventListener('submit', function (e) {
e.preventDefault();
var newItem = {name: inputName.value, age: inputAge.value};
itemsArray.push(newItem);
thMaker(newItem);
inputName.value = "";
inputAge.value = "";
});
data.forEach(item => {
thMaker(item);
});
<html>
<body>
<div id="addRow">
<form method="post" id="form-table">
String
<input type="text" id="name" name="text4">
Number
<input type="number" id="age" name="text5">
<input type="submit" name="submit"> <!-- Submit dugme - **** PROBLEM: Refreshuje stranicu **** -->
</form>
</div>
<!-- TABELA -->
<div id="download-excel">
<table id="myTable" class="t01">
<tr>
<th>
Name
</th>
<th>
Age
</th>
</tr>
</table>
</div>
</body>
</html>
答案 1 :(得分:1)
HTMLTableElement.createTHead()
返回一个HTMLElement,它表示第一个元素的子元素。如果未找到,则创建一个新的元素,并将其插入树中紧接在第一个元素(既不是a,也不是a)之前的树中,或者作为最后一个子元素(如果没有此类元素的话)。
HTMLTableElement.deleteTHead()
删除第一个元素的子元素。
HTMLTableElement.createTFoot()
返回一个HTMLElement,它表示第一个元素的子元素。如果未找到,则创建一个新元素,并将其插入到树中紧接在第一个元素既不是a,a,a还是第一个元素之前的树中;如果没有这样的元素,则作为最后一个子元素。
HTMLTableElement.deleteTFoot()
删除第一个元素的子元素。
HTMLTableElement.createCaption()
返回一个HTMLElement,它表示第一个元素的子元素。如果未找到,则创建一个新对象,并将其作为元素的第一个子元素插入树中。
HTMLTableElement.deleteCaption()
删除第一个元素的子元素。
HTMLTableElement.insertRow()
返回表示表的新行的HTMLTableRowElement。它将其插入到行集合中紧接在给定索引位置的元素之前。如有必要,将创建一个。如果索引为-1,则将新行追加到集合中。如果索引小于-1或大于集合中的行数,则会引发一个值为IndexSizeError的DOMException。
HTMLTableElement.deleteRow()
删除与参数中给定索引对应的行。如果索引值为-1,则删除最后一行;如果它小于-1或大于集合中的行数,则会引发一个值为IndexSizeError的DOMException。
另请参阅HTMLTableRowElement#insertCell
HTMLTableRowElement.insertCell()
在行中给定位置之前插入一个新单元格。如果给定位置未给出或为-1,则它将单元格附加到该行。如果给定位置大于(或等于从零开始的位置)大于行中单元格的数量,或者小于-1,则它将引发带有IndexSizeError值的DOMException。返回对HTMLTableCellElement [en-US]的引用。
答案 2 :(得分:0)
根据外观,thMaker
创建单个td
元素。
另外,您发布的函数定义仅包含一个参数。
解决方案是让thMaker
函数创建两个td
元素,并使用两个参数。
建议:由于“ thMaker”不是创建“表格标题”而是创建“表格行”-tr
元素,因此将其重命名为“ trMaker”。
这是一个示例解决方案:
const trMaker = (name, age) => {
const tr = document.createElement('tr');
tr.innerHTML = `<td>${name}</td><td>${age}</td>`;
table.append(tr);
}