javascript .length.toString无法正确测量

时间:2017-11-20 17:35:17

标签: javascript dom safari contenteditable

环境: OS X 10.12.6,Safari 11.0.1

我有一个令人满意的div,我使用onkeyup来显示页面上其他位置的div中div的字符数。在div onkeyup=fn()调用的函数中,我有这个:

var oj = document.getElementById("mydiv");
var co = oj.innerText;
var le = co.length.toString();
var sp = document.getElementById("myspan");
sp.innerHTML = le;

所以说我在div中键入了5个字符,例如abcde;我得到了五个 - 正如你所期望的那样。当我退格时,它会正确倒计时:

4, 3, 2, 1...

但是当我在最后一个字符a上退格时,而不是从一个字符变为零...结果保持为1。我明白这一点:

         +-------- // Everything here and previous is correct
         |  +----- // Still correct, there's still an a in there
         |  |  +-- // This is incorrect - the div is now empty
         |  |  |
5, 4, 3, 2, 1, 1
a  a  a  a  a
b  b  b  b
c  c  c
d  d
e

同样,当我再次键入abcde时,计数保持为1为空,仍然保持为a的一个,然后 继续......

2, 3, 4, 5

...从而显示两次:一次是空的,一次是div中实际上有一个字符:

+-------- // div is empty here - this is wrong
|  +----- // div actually has one character here
|  |  +-- // and this and following are all correct
|  |  |
1, 1, 2, 3, 4, 5
   a  a  a  a  a
      b  b  b  b
         c  c  c
            d  d
               e

javascript控制台中没有错误,过去的代码肯定在执行,所以Javascript机器并没有被呛到。

我希望得到零。为什么我得到这个结果?

0 个答案:

没有答案