奇怪的 DOM 树 JavaScript 问题

发布于 2024-12-05 01:03:23 字数 387 浏览 0 评论 0原文

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

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

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

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

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

I am having an issue with this site -

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

I'm trying to build a simple HTML emailer with JavaScript to render and generate HTML which will then be sent to a page, etc.

However, when you create three paragraphs (箱を作る) and then try to move the third one up with the onclick being swapup('render2'); it just moves it to the top.

But the odd thing is when you paste swapup('render2'); in the console, it works just fine. Why should the onclick behaviour be different when I'm not referencing 'this' in any capacity?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长途伴 2024-12-12 01:03:23

你的问题是你调用了两次 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 + '\');');

Your problem is that you are calling swapup twice. Take a look at the HTML

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

both span and input are calling swapup. It looks like swapup is being dynamically assigned at some point to the span, which may be causing your problem... I'll have to dig a little more to figure it out though.

EDIT:

I see now. In your swapup function you are calling

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

I'm not sure if you intended that or not... can you clarify?

EDIT 2:

I think you need to change

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

in boxes.js lines 23-24 to

elm.getElementsByTagName("input")[0].setAttribute('onclick', 'swapup(\'' + previous.id + '\');');
previous.getElementsByTagName("input")[0].setAttribute('onclick', 'swapup(\'' + temp + '\');');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文