奇怪的DOM树JavaScript问题

时间:2011-09-16 17:22:07

标签: javascript dom

我在使用此网站时遇到问题 -

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

我正在尝试使用JavaScript构建一个简单的HTML电子邮件程序,以呈现并生成HTML,然后将其发送到页面等。

然而,当你创建三个段落(箱を作る)然后尝试移动第三个段落时onclick是swapup('render2');它只是将它移到顶部。

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

1 个答案:

答案 0 :(得分:2)

你的问题是你要两次调用swapup。看一下HTML

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

span和input都调用swapup。看起来交换是在某个时刻动态分配到跨度,这可能会导致你的问题......我将不得不再挖掘一点来解决它。

编辑:

我现在看到了。在您的交换功能中,您正在调用

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

我不确定你是否打算这样做......你能澄清一下吗?

编辑2:

我认为你需要改变

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

在boxes.js第23-24行到

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