繁体   English   中英

我想使用.childNodes 迭代表,然后找到标签。 我的代码不起作用!

[英]I want to iterate the Table using .childNodes, then find the <B> tag. My code doesn't work!

我的代码有问题。 我想使用 Javascript 获得具有银色风格的 b 标签。 我尝试使用 tagName === "B" 但它没有用。 我认为 B 标签不是 rowData class 的子代。

  <tr class="rowData">
    <td style="padding: 0pt;">
                <table><tr>
                <td>
                    <b style="font-size: 15px; color: silver;">Mugging</b>
                    <br />Payout: <b style="color: green;">$200 - $300</b>
                    <br />Experience: +1                                    </td>

                <td style="text-align: right;">
                                    </td>
            </tr></table>
        </td>
        <td style="padding: 0pt;">
            <table><tr>
                <td style="width: 100px;">
                    <b style="color: gray;">Required:</b>

                    <br />Energy:&nbsp;1                                    </td>
                <td style="">
                                    </td>
            </tr></table>
        </td>

        </td>
  </tr>

我删了一部分。。

这是 Javascript 代码的一部分:

var jobs = {};

jobs.scan = function() {
    var tagHolder = {};
    var availJobs = {};
    var jobContents = dom.get("app8743457343_content");
    var rData = dom.getElementsByClass("rowData", jobContents, "tr");
    for(var i = 0; i < rData.length; i++) {
        var rChildren = rData[i].childNodes;
        for(var j=0; j<rChildren.length; j++) {
            if(rChildren[j].tagName === 'B') {
                alert(rChildren[j]);
            }
        }
    }
}

jobs.scan();

当我启动脚本时,它没有发出警报,也没有响应。 也许我需要使用一些东西来喜欢 nextSibling? 请帮我解决这个问题。我想要银色风格的b。 抢劫案文

可以打一场精彩的战斗,并尝试让这个怪物在所有浏览器上运行......

或者,您可以尝试jQuery ,它既有趣又简单,所有酷孩子都在这样做!

var text = $('tr.rowData').find('b').filter(function() {
    return $(this).css('color') == 'silver';
}).text();
alert(text);

多田!

编辑:说真的,如果您想在原始 javascript 中执行此操作,这适用于 IE 和 Firefox:

var text;
var bs = document.getElementsByTagName("b");
for(var x = 0; x < bs.length; x++) {
    if(bs[x].style.color == 'silver') {
        text = bs[x].innerHTML;
        break;
    }
}
alert(text);

它只是抓取文档中的所有粗体元素并检查哪个具有银色。 显然,这不是超级有效,而且我不确定您的用例。 我确实在您的代码中看到您首先获取对jobContents元素的引用。 我不确定这是从哪里来的,因为你没有发布那部分标记,但是如果<b>最终会在这个元素内,你可以更改这一行:

var bs = document.getElementsByTagName("b");

对此:

var bs = jobContents.getElementsByTagName("b");

然后它将 1) 加快速度,2) 确保你得到你想要的。

祝你好运。

您的代码没有 go 深入到树中。 您至少需要 4 级以上的 childNode "for" 循环才能到达 "B" 标记。 如果您使用 go 这条路线,那么您可能应该创建一个递归 function 来搜索您的“B”标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM