Greasemonkey脚本将一个元素移动到另一个元素中?

3

我想移动 <div> 元素。在这种情况下,交换第一个和最后一个 div.clearfix。所以变成这样:

<fieldset>
    <div class="clearfix ">
        <label for="form-title">Title</label>
        <div class="input"></div>
    </div>
    <div class="clearfix "></div>
    <div class="clearfix ">
        <label>Verification</label>
        <div dir="ltr">
            recaptcha
        </div>
    </div>
</fieldset>

将变为这样:

<fieldset>
    <div class="clearfix ">
        <label>Verification</label>
        <div dir="ltr">
             recaptcha
        </div>
    </div>
    <div class="clearfix "></div>
    <div class="clearfix ">
        <label for="form-title">Title</label>
        <div class="input"></div>
    </div>
</fieldset>

我已经搜索过了,但是我找到的都是移动(屏幕?)位置,而不是我想要的。如何交换那些 <div>


你想要交换第一个和最后一个 div.clearfix,还是其他什么? - Brock Adams
是的,我想交换最后一个clearfix和第一个clearfix,你能帮我吗? - GeekToL
1个回答

4

如果要交换给定 HTML 中第一个和最后一个 div.clearfix,可以使用 querySelectorinsertBeforeappendChild 函数。

以下是一个完整的 Greasemonkey 脚本,实现了上述功能:

// ==UserScript==
// @name     _Swap first and last div.clearfix
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    none
// ==/UserScript==

var container    = document.querySelector ("fieldset");
var firstTargDiv = container.querySelector ("fieldset > div.clearfix:first-child");
var lastTargDiv  = container.querySelector ("fieldset > div.clearfix:last-child");

//-- Swap last to first.
container.insertBefore (lastTargDiv, firstTargDiv);

//-- Move old first to last.
container.appendChild (firstTargDiv);

那是因为这个小提琴与问题中的代码不匹配!请参见http://jsfiddle.net/EbXcs/以了解新的、**更改后的**HTML。在提问中,还请提供精确的细节。对于用户脚本问题,最好使用未经修改的目标页面HTML。 - Brock Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接