javascript - Sqlite html5在插入时重复记录
问题描述
我有一个用户日志表,它为每个用户操作插入一条记录,但有时它会复制插入的记录。
我的代码很简单
<script>
db.transaction(function(tx) {
tx.executeSql('INSERT INTO tab_log (date_occurrence,hour_occurrence,number_user,occurrence,obs_occurrence) VALUES (?,?,?,?,?)', [var_date, var_hour, var_number_user, var_occurrence, var_obs_occurrence]);
});
</script>
<input type="button" name="btn_finish" id="btn_finish" value="Finish" onclick="this.blur();salvar();">
编辑我已经发布了完整的代码。此代码完美运行,但有时会在日志表的行中翻倍
这曾经发生在任何人身上吗?有谁知道它可能是什么?
解决方案
可以这么说,您正在添加两次点击侦听器。有一个在事件carregado()
上调用的函数,它将window
load
事件侦听器绑定到finish
按钮。
function carregado() {
document.getElementById('btn_finish').addEventListener('click', salvar);
}
但是,html
另一方面,您正在设置该onclick
按钮的属性,使其调用salvar()
两次,onclick
并且addEventListener('click')
都将不同的侦听器绑定到该按钮。
<input ... id="btn_finish" value="Finish" onclick="this.blur();salvar();">
你可以做些什么来解决这个问题,就是删除onlick
属性调用,salvar()
因为它破坏了你的逻辑,只有在完成加载页面后才绑定事件carregado()
,所以在onclick
这种情况下,这部分似乎没用。尽管如此,它会阻止salvar()
被调用两次。
推荐阅读
- c# - 导航属性
- flutter - 我已经在我的 Mac M1 上安装了最新版本的 CocoaPods,但它仍然显示依赖项已过期
- reactjs - 文件上传到浏览器时如何获取进度条
- hive - 通过 GNU 并行运行时,直线卡在第二个命令上
- python - 从 RST 文档中提取文本块,文件由 :ref:?
- django-models - django 'User' 对象在使用 post_save 时没有属性 'profile'
- node.js - 使用 nodejs 获取循环
- php - 试图在 NodeJs 中找到等效于 php 函数 pack("H*", $a)
- java - 在 Android 10 及更高版本上激活免提电话
- c - mpirun 无法启动指定的应用程序,因为它无法使用 C 访问或执行可执行文件