我无法弄清楚为什么我的数据在存储到数组时会表现得很奇怪。基本上我所拥有的是一个音符部分,我正在尝试实现一个功能,让您编辑音符,它将在您编辑时保存音符。
我做了这个,当音符聚焦时它会保存当前键入的音符,然后在键入新音符时,它将查找数组中的旧音符并将其替换为新音符。这似乎适用于第一个,但是当我在第一个之后单击另一个音符时,它会用最新音符替换第一个音符数据。
图像是阵列的控制台日志。我做了什么:添加了4个音符,ABCD,添加1到A,2到B,3到C,4到B.这是控制台日志每次显示的内容,因为你可以看到1a工作正常,然后2b替换1a ,然后3c替换了另外两个,依此类推。
我感觉这是我编写它的工作流程,但无法弄明白
HTML:
<div id="icon-wrapper">
<div id="notes-icon" class="icons glyphicon glyphicon-list-alt"></div>
<div id="bg-left" class="icons glyphicon glyphicon-chevron-left"></div>
<div id="bg-right" class="icons glyphicon glyphicon-chevron-right"></div>
<div id="refresh" class="icons glyphicon glyphicon-refresh"></div>
<div id="pin" class="icons"></div>
</div>
<div id="time-wrapper">
<div id="time"></div>
<div id="date"></div>
</div>
<div id="input-wrapper">
<input type="text" id="input-box" placeholder="Create a note">
</div>
<div id="notes-wrapper">
</div>
使用Javascript:
$(document).on('focus', '.note>span', function(e){
var storedNote = $(this).text();
var storedNoteIndex = notes.indexOf(storedNote);
console.log('Stored Note: ' + storedNote);
console.log('Index of Stored Note: ' + storedNoteIndex);
console.log(notes)
$(document).on('keyup', '.note>span', function (e) { //edit notes
var newNote = $(this).text();
if(newNote != "" && newNote != " " && newNote.charAt(0) != " ") {
/*if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
}*/
var newNote = $(this).text();
notes.splice(storedNoteIndex, 1, newNote);
chrome.storage.sync.set({'notes':notes});
console.log(notes);
}
else{
notes.splice(storedNoteIndex, 1);
chrome.storage.sync.set({'notes':notes});
}
});
})
答案 0 :(得分:0)
原来这是一个非常愚蠢的错误!我有关键功能作用于所有&#39; .note&gt; span&#39;而不仅仅是焦点的那个......
改变
$(document).on('keyup', '.note>span', function (e) {
到
$(this).keyup(function (e) {
感觉有点愚蠢!