需要 DOM 操作帮助

Posted

技术标签:

【中文标题】需要 DOM 操作帮助【英文标题】:DOM Manipulation help needed 【发布时间】:2012-09-21 21:09:53 【问题描述】:
<div id="main">
<div class="navigate">
    <ul>
        <li>
            <a href="http://localhost/xm/index.php"><span>xm</span></a> &#187;
        </li>
        <li>
            <a href="http://localhost/xm/index.php?action=admin"><span>Admin</span></a> &#187;
        </li>
        <li>
            <a href="http://localhost/xm/index.php?action=admin;change=name;random02342=randomvaluetoo320230"><span>change</span></a>
            .......

从这个 html 代码中,我必须在变量中获取随机生成的数据“random02342=randomvaluetoo320230”,这也是随机生成的 random0234 和随机值。我如何通过 javascript(或非 jquery)实现这一点?

编辑:random02342 和 randomvaluetoo320230 是在服务器端随机生成的。所以就像每次像 1stHash4324kjkjdas324324=And2ndAnotherHash324324asd23432 这样的新哈希一样

【问题讨论】:

这些值是否有模式,例如如果它总是以“随机”开头?还是它总是有三个查询参数?你知道查询字符串中的所有其他参数吗? 我知道的所有其他内容和第三个内容都是随机生成的,例如 ?action=admin;change=name;1stHASH=2ndHASH 并且之间总是有“=”。 【参考方案1】:

这会得到它,尽管它可能不会因优雅而赢得任何奖项:

var m = document.getElementById('main').innerHTML.match(/random(\d+)=randomvaluetoo(\d+)/);
// m[1] and m[2] are the two random values.

【讨论】:

你试过你的例子吗?如果您有生成值的模式,这将适合 在我看来,您要么需要删除 '/' 要么首先拆分查询字符串 "random" 和 "randomvaluetoo" 也是服务器端随机生成的.. =/ 所以它就像 HASH23434=anotherHASH2342 @Petar 你应该在你的问题中澄清这一点【参考方案2】:

根据您的评论:

var value = $('selector').attr('href').split(';')[2].split('=');

这将为您提供 value[0] - 名称和 value[1] - 值 但是,这仅适用于有 3 个查询参数并且随机参数是第三个时

这也可能有用Parse query string in JavaScript

【讨论】:

不客气,虽然不是很好的解决方案...考虑重构它会很好【参考方案3】:
var first, second;

var q = $('.navigate ul li a[href*="change=name"]').attr('href').split(';').filter(
    function() 
        return this.contains('random');
    
).join().replace(/[a-zA-z]/g, '').split('=');

first = q[0];
second = q[1];

【讨论】:

以上是关于需要 DOM 操作帮助的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助了解 Shadow DOM

需要帮助在 SquareSpace 上引用 DOM 元素

使用 php simple html dom 抓取时需要帮助修复 html [重复]

Angular VS jQuery

用DOM思想,学习DOM知识

如何将内联 svg(在 DOM 中)绘制到画布上?