我有一个用户日志表,它为每个用户操作插入一条记录,但有时它会复制插入的记录。
我的代码非常简单
<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();">
您可以做的是删除对salvar()
的onlick
属性调用,因为它破坏了仅在完成加载页面后才绑定事件的逻辑carregado()
,因此onclick
部分在这种情况下似乎毫无用处。尽管如此,它将防止salvar()
被召唤两次。