Html/Javascript table 内置计算器
Html/Javascript table with built in calculator
我从 table
的不同部分 select 得到了这个 table 内置的计算器功能,并在最后将所有内容相加。但我的问题是,如果我点击其中一个里面有字母而不是数字的方块,计算器就会坏掉,我该如何解决?
如何让第一个包含信息(车名)的点赞不可点击,并且只有前5个方块。
table代码:
<table>
<tr>
<th bgcolor="b8cce4">Modell</td>
<th>Trend</td>
<th>Titanum</td>
<th>Familiepakke</td>
<th>Førerassistentpakke</td>
<th>Stilpakke</td>
<th>Sluttpris</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Kuga</b></td>
<td>401000</td>
<td>420000</td>
<td>1000</td>
<td>10200</td>
<td>9200</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>C-max</b></td>
<td>320000</td>
<td>335000</td>
<td>1000</td>
<td>9400</td>
<td>3600</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Focus</b></td>
<td>255000</td>
<td>325000</td>
<td>900</td>
<td>12500</td>
<td>9000</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Mondeo</b></td>
<td>281000</td>
<td>361000</td>
<td>1100</td>
<td>9900</td>
<td>7200</td>
<td>kr</td>
</tr>
脚本:
(function() {
var tds = document.querySelectorAll('tr td:not(:last-child)');
for (var td in tds) {
tds[td].addEventListener('click', function(evt) {
evt.target.classList.toggle('selected');
var total = 0;
var parentTr = evt.target.parentNode;
var selected = parentTr.querySelectorAll('.selected');
for (var k in selected) {
if (selected[k].innerText) {
total += parseInt(selected[k].innerText);
}
}
parentTr.querySelector('td:last-child').innerText = total;
});
}
})();
在你的循环中,测试它是否是一个数字字段然后才处理它:
if ((selected[k].innerText) && (/^\d+$/.test(selected[k].innerText))) {
total += parseInt(selected[k].innerText);
}
我从 table
的不同部分 select 得到了这个 table 内置的计算器功能,并在最后将所有内容相加。但我的问题是,如果我点击其中一个里面有字母而不是数字的方块,计算器就会坏掉,我该如何解决?
如何让第一个包含信息(车名)的点赞不可点击,并且只有前5个方块。 table代码:
<table>
<tr>
<th bgcolor="b8cce4">Modell</td>
<th>Trend</td>
<th>Titanum</td>
<th>Familiepakke</td>
<th>Førerassistentpakke</td>
<th>Stilpakke</td>
<th>Sluttpris</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Kuga</b></td>
<td>401000</td>
<td>420000</td>
<td>1000</td>
<td>10200</td>
<td>9200</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>C-max</b></td>
<td>320000</td>
<td>335000</td>
<td>1000</td>
<td>9400</td>
<td>3600</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Focus</b></td>
<td>255000</td>
<td>325000</td>
<td>900</td>
<td>12500</td>
<td>9000</td>
<td>kr</td>
</tr>
<tr>
<td bgcolor="b8cce4"><b>Mondeo</b></td>
<td>281000</td>
<td>361000</td>
<td>1100</td>
<td>9900</td>
<td>7200</td>
<td>kr</td>
</tr>
脚本:
(function() {
var tds = document.querySelectorAll('tr td:not(:last-child)');
for (var td in tds) {
tds[td].addEventListener('click', function(evt) {
evt.target.classList.toggle('selected');
var total = 0;
var parentTr = evt.target.parentNode;
var selected = parentTr.querySelectorAll('.selected');
for (var k in selected) {
if (selected[k].innerText) {
total += parseInt(selected[k].innerText);
}
}
parentTr.querySelector('td:last-child').innerText = total;
});
}
})();
在你的循环中,测试它是否是一个数字字段然后才处理它:
if ((selected[k].innerText) && (/^\d+$/.test(selected[k].innerText))) {
total += parseInt(selected[k].innerText);
}