我正在使用push方法将新值添加到现有数组(st [])。添加新值有效,但数组中的所有值都将获取最后添加的元素的值。
if(!window.WordCatcher){
WordCatcher = {};
}
WordCatcher.selector = {};
WordCatcher.selector.getSelected = function(){
var t = '';
if(window.getSelection) {t = window.getSelection();}
else if(document.getSelection) {t = document.getSelection();}
else if(document.selection) {t = document.selection.createRange().text;}
return t;
}
st = new Array();
WordCatcher.selector.dblclick = function() {
st.push(WordCatcher.selector.getSelected());
console.log(st);
}
使用以下命令在jQuery中调用该函数:
$(document).bind("dblclick", WordCatcher.selector.dblclick);
示例:如果我先双击“Die”,第二次“Smart”,第三次“TV”,我将在firebug中获得以下日志:
[Die { constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}] [Smart {constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}, Smart {constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}] [TV { constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}, TV {constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}, TV {constructor=Selection, focusNode=textNode, anchorNode=textNode, mehr...}]
也许有人知道我在做什么。
祝你好运, 安迪
答案 0 :(得分:1)
我认为你推动了对“t”的引用。
每次更改时 - 所有数组元素都在变化,因为它们都引用了相同的参数=> “T”。
问题可能出在你的函数中:WordCatcher.selector.getSelected
尝试更改它以返回其他内容,然后再次检查。
答案 1 :(得分:0)
内部窗口的选择对象是一种单例,即每次getSelection()调用都返回对同一对象的相同引用。因此,您必须手动获取所需的所有数据,或克隆该对象,但不存储即时结果。