javascript - JavaScript 更新并依赖于选择输入
问题描述
我遇到了一个很大的问题,无法接近解决方案。我在 JS 方面不是最好的,并且正在尝试学习这种语言,我相信如果不是完整的解决方案,您至少可以给我一些提示。
可以在这里找到我想要实现的 CodePen 示例。以及以下:
<input type="search" id="myInput" onSearch="myFunction()" placeholder="scan sku id here">
<p id="mySearch"></p>
<table>
<th>SKU ID</th>
<th>QTY</th>
<tBody>
<tr>
<td>SKU1</td>
<td id="totalSKU">6</td>
</tr>
<tr>
<td>SKU2</td>
<td id="totalSKU">8</td>
</tr>
</tBody>
</table>
<br/>
<p>TOTAL:<p>
<p id="myVar">0</p>
<script>
var x = document.getElementById("myInput");
var y = document.getElementById('totalSKU').innerText;
var z = 0;
function myFunction() {
document.getElementById("mySearch").innerHTML = x.value;
if(y>0)
{
document.getElementById('totalSKU').innerText = --y;
document.getElementById('myVar').innerText = ++z;
}
else
alert("Cannot Proceed!");
}
</script>
一般来说,我正在寻找一种解决方案,它可以让我在不影响数据库的情况下操作呈现给用户的屏幕上的数据。
我的报告将仅显示几行带有 sku_id、描述和数量的数据。
将要求用户输入两个输入。Box id,它将显示此框中包含的所有 SKU - 没问题。之后用户将被要求将 SKU id 扫描到 sku 字段中。
现在我遇到的问题是:
- 修改/减去数量,其中 sku_id = 用户输入 sku_id
- 更新 qty = 0 的整行背景
- 应显示扫描的项目总数,但不允许过度扫描。
希望我已经足够清楚了,但是如果您还有其他问题,请随时提出,我很乐意为您提供帮助。
提前谢谢了。
解决方案
我注意到您需要在计算中使用parseInt()的第一件事。当您获得一个节点的 innerText 时,它会以字符串的形式返回,那么您需要在对其进行任何类型的数学运算之前对其进行解析(例如递减它)。
接下来,您有 2 个相同的 ID ( totalSKU
),ID 应该是唯一的。所以我将它们更新为最后有 1 和 2。当搜索通过时,它会将搜索附加到 ID 以获取正确的 ID。您应该围绕此添加更多检查(例如,如果搜索不是有效数字)。
我也更新了一些 var 名称,以便在下面的示例中更加清晰。在示例中,您可以输入1
或2
在搜索中,它将减少正确的 SKU。
var searchInput = document.getElementById("myInput");
function myFunction() {
var totalVar = document.getElementById('myVar');
var searchValue = parseInt(searchInput.value);
var totalSKU = document.getElementById(`totalSKU${searchValue}`);
if(totalSKU === null){
alert("no SKU found");
return;
}
var totalSKUNumber = parseInt(totalSKU.innerText);
document.getElementById("mySearch").innerText = searchValue;
if (totalSKUNumber > 0) {
totalSKU.innerText = --totalSKUNumber;
totalVar.innerText = parseInt(totalVar.innerText) - 1;
} else {
alert("Cannot Proceed!");
}
}
<input type="search" id="myInput" onSearch="myFunction()" placeholder="scan sku id here">
<p id="mySearch"></p>
<table>
<th>SKU ID</th>
<th>QTY</th>
<tBody>
<tr>
<td>SKU1</td>
<td id="totalSKU1">6</td>
</tr>
<tr>
<td>SKU2</td>
<td id="totalSKU2">15</td>
</tr>
</tBody>
</table>
<br/>
<p>TOTAL:
<p>
<p id="myVar">21</p>
推荐阅读
- javascript - 我应该将“单击”更改为“绑定”吗?它不能一起工作
- php - PHP - Guzzle 中间件
- java - 我想知道如何显示服务
- python - Scrapinghub 在信号处理程序上遇到错误:
我有一个可以在本地运行的scrapy 脚本,但是当我将它部署到Scrapinghub 时,它会给出所有错误。调试后,错误来自 Yielding item。
这是我得到的错误。
ERROR [scrapy.utils.signal] Error caught on signal ha
- angular - Angular KendoUI 中的异步 Excel 导出导出空集合
- reactjs - 如何使用调用 API 从 PHP 下载文件?
- batch-file - 批处理文件定时提醒
- mysql - LOAD DATA INFILE 返回 0 行受影响,MySQL 8
- entity-framework - Entity Framework 6:将复杂类型映射到多列
- postgresql - 为什么向索引添加排好序的列不能提高效率?