【问题标题】:Get x number of last element获取最后一个元素的 x 个数
【发布时间】:2013-06-24 11:53:35
【问题描述】:

如何有效地从末尾获取一定数量的元素?

<div><span>1</span></div>
<div><div>looks like 2</div></div>
<div>three!!</div>

例如,我如何获取最后 2 个divs 的内容?

【问题讨论】:

  • 您的问题含糊不清。您想如何获取元素的内容?通过 PHP 还是 Javascript?您想将结果存储在哪里?
  • 我标记了 PHP,但 JavaScript 或 jQuery 不会受到伤害。 @FilipposKarapetis

标签: php javascript jquery dom domdocument


【解决方案1】:
$(document).ready(function(){
    var total = $("div").length;
    var last  = $("div").eq(total-1).html();
    var secondlast  = $("div").eq(total-2).html();
});

查看演示here

【讨论】:

    【解决方案2】:

    如果您正在寻找 xpath 查询 - 您可以在 Javascript 或 PHP 中使用它:

    *[position() > last() - 2]
    

    你相对于上下文节点执行它,这里是父节点:

    $doc = new DOMDocument();
    $doc->loadXML($xml);
    
    $context = $doc->documentElement;
    $xp = new DOMXPath($doc);
    
    $elements = $xp->query('*[position() > last() - 2]', $context);
    var_dump($elements->length);
    
    foreach($elements as $i => $element) {
        printf("%d: %s\n", $i, $doc->saveXML($element));
    }
    

    输出:

    int(2)
    0: <div>
        <div>looks like 2</div>
      </div>
    1: <div>three!!</div>
    

    希望这会有所帮助。我采取了美化XML的权利。 Online Demo is here.

    【讨论】:

    • 看起来不错,但我将如何输出原始 HTML 的所有内容?没有所有的 0: 和 int(2)
    • 你能看一下输出数字的那一行吗?如果你仔细观察,我想你会看到它是如何工作的。我只是把数字放进去,以便更好地证明有两个结果,在实际应用程序中,你自然会忽略这些数字,当然!
    • 那么... int 是从哪里来的?
    • 啊那个,抱歉,是length属性的var_dump()
    【解决方案3】:

    如果你的意思是使用 JQuery,它会是这样的(我是如何理解你的问题的)

    var last = 5;
    jQuery('body> div:nth-last-child('+(last+1)+') ~div')
    

    【讨论】:

    • 哦!这是测试过的吗?非常感谢!
    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2022-09-29
    • 1970-01-01
    相关资源
    最近更新 更多