javascript - 如何使部分不可编辑的表格单元格与内联 JavaScript 函数兼容?
问题描述
所以,几天前,我发布了这个问题(几乎相同)并收到了非常有用的回复。
但是,为了制作一个表格计算器,我已经id
为某一列的每个表格行设置了一个表格,以将表格变成一个计算器,当我尝试为自己应用时,这会弄乱原始问题的答案(JavaScript 用数字解析单位“kg”并将总和显示为“NaN”)。
同样,每个单元格内都有一个可见的文本框,上面有答案,看起来有点难看。我当前的代码包含不显示为文本框但仍可编辑的单元格,这在我看来提供了更流畅的体验(我知道它没有功能上的区别,但外观让我很烦恼!)
下面是我希望代码看起来像的模型。我试图让数字/输入出现在文本框的右侧,但仍然在单位的左侧(“kg”)。
下面是我正在尝试创建的模型(除了右侧的数字)。
这是我的代码:
<head>
<style>
table {
border: 1px solid black;
border-collapse: collapse;
font-family: Arial, sans-serif;
margin: 5px;
width: 100%;
}
th, td {
border: 1px solid black;
border-collapse: collapse;
font-family: Arial, sans-serif;
margin: 5px;
padding: 5px;
}
</style>
</head>
<body>
<table>
<tr>
<th>header1</th>
<th>header2</th>
</tr>
<tr>
<td>entry1</td>
<td id="entry1" oninput="myFunction()">4000</td>
</tr>
<tr>
<td>entry2</td>
<td id="entry2" oninput="myFunction()">200</td>
</tr>
<tr>
<td>Total</td>
<td id="total"></td>
</tr>
</table>
<script type="text/javascript">
document.getElementById("entry1").contentEditable = true;
document.getElementById("entry2").contentEditable = true;
function myFunction() {
var entry1 = document.getElementById("entry1").innerText;
var entry2 = document.getElementById("entry2").innerText;
var total2 = parseInt(entry1) + parseInt(entry2);
document.getElementById("total").innerHTML = total2;
}
myFunction();
</script>
</body>
如您所见,它将右列中的数字相加,并在最后一行显示总和。但是,我希望单位在此处显示(例如“kg”),这是不可编辑的,更重要的是,不要在 JavaScript 函数中被解析为数字。如果丑陋的文本框轮廓也没有出现在单元格内,那就太好了。
这可能吗?任何答案表示赞赏!
解决方案
为避免结果为“NAN”,添加了一个 if 并检查其中一个封条为空 '' 并将其替换为 0。在编辑单元格中添加了两个 div,一个用于编辑值,另一个用于添加文字“公斤”。
<style>
table {
border: 1px solid black;
border-collapse: collapse;
font-family: Arial, sans-serif;
margin: 5px;
width: 100%;
}
th, td {
border: 1px solid black;
border-collapse: collapse;
font-family: Arial, sans-serif;
margin: 5px;
padding: 5px;
}
.input_{
width: 90%;
float: left;
}
.peso{
width: 10%;
float: right;
}
</style>
<table>
<tr>
<th>Person</th>
<th>Weight</th>
</tr>
<tr>
<td>Jack</td>
<td>
<div class="input_" id="jack" oninput="myFunction()">1</div>
<div class="peso">kg</div>
</td>
</tr>
<tr>
<td>John</td>
<td>
<div class="input_" id="john" oninput="myFunction()">2</div>
<div class="peso">kg</div>
</td>
</tr>
<tr>
<td>Joe</td>
<td>
<div class="input_" id="joe" oninput="myFunction()">3</div>
<div class="peso">kg</div>
</td>
</tr>
<tr>
<td>Total</td>
<td id="total"></td>
</tr>
</table>
<script type="text/javascript">
document.getElementById("jack").contentEditable = true;
document.getElementById("john").contentEditable = true;
document.getElementById("joe").contentEditable = true;
function myFunction() {
var jack2 = document.getElementById("jack").innerText;
var john2 = document.getElementById("john").innerText;
var joe2 = document.getElementById("joe").innerText;
if(jack2==""){
jack2=0;
}
if(john2==""){
john2=0;
}
if(joe2==""){
joe2=0;
}
var total2 = parseInt(jack2) + parseInt(john2) + parseInt (joe2);
document.getElementById("total").innerHTML = total2+" kg";
}
myFunction();
</script>
推荐阅读
- .net - GetCommTimeouts returns error 87 for network printer
- python - 如何使用python将新数据附加到pickle文件
- apache-nifi - Nifi:为什么“通知”不重置计数器,为什么“等待”计数不正确?
- javascript - 我怎样才能使这个 JSON.stringify 正常工作
- kubernetes - 如果我在不同的终端会话中与不同的 kubernetes 集群交互而不必一直切换上下文,该怎么办?
- c# - 如何修复空文本框问题
- javascript - 如何使用数组数据 API React 循环渲染
- javascript - 进行第一次选择
- python - 对字典中的数组进行排序
- html - Safari 与标准动画语法