奇怪的DOM树JavaScript问题

Odd DOM tree JavaScript problem

本文关键字:JavaScript 问题 DOM      更新时间:2023-09-26

我有一个问题与这个网站-

http://thestamp.umd.edu/canvastest/test.html

我试图用JavaScript构建一个简单的HTML电子邮件来渲染和生成HTML,然后将其发送到页面等

然而,

当你创建三个段落(箱を作る)然后将第三个的onclick被swapup("render2");它只是把它移到顶部。

但是奇怪的是当你粘贴swap ('render2');在控制台中,它工作得很好。当我没有以任何身份引用"this"时,为什么onclick行为会有所不同?

您的问题是您调用了两次swap。看一下HTML

<span class="floatbutton" onclick="swapup('render0');">
    <input onclick="swapup('render2');" value="上" type="button">
    <input onclick="swapdown();" value="下" type="button">
</span>

span和input都在调用swap。看起来swap在某个点被动态分配给跨度,这可能会导致您的问题…不过,我得再多挖一点才能弄清楚。

编辑:

我现在明白了。在你的swap函数中,你正在调用

elm.childNodes[0].setAttribute('onclick', 'swapup(''' + previous.id + ''');');

我不确定你是不是有意的……你能解释一下吗?

编辑2:

我认为你需要改变

elm.childNodes[0].setAttribute('onclick', 'swapup(''' + previous.id + ''');');
previous.childNodes[0].setAttribute('onclick', 'swapup(''' + temp + ''');');

在box .js第23-24行到

elm.getElementsByTagName("input")[0].setAttribute('onclick', 'swapup(''' + previous.id + ''');');
previous.getElementsByTagName("input")[0].setAttribute('onclick', 'swapup(''' + temp + ''');');