【问题标题】:How to find text using JavaScript?如何使用 JavaScript 查找文本?
【发布时间】:2012-02-19 01:55:44
【问题描述】:

这是我查找价格的代码。

a = prompt("Link?") window.location = a var priceElement = document.getElementById('UserSalesTab').getElementsByTagName('tr')[1].getElementsByTagName('td')[2].getElementsByTagName('b')[0]; // Get the element that contains the price var price = parseInt(priceElement.innerHTML.match(/\d+/));

【问题讨论】:

  • 发布 HTML 的示例 sn-p
  • 这是不可能的。您需要在页面上提供一些参考,在内部搜索一些元素以使搜索范围更窄。给我们这个“价格”和一些周边元素的 HTML。
  • R$980
  • @nPwn 显示整个代码,而不仅仅是您要查找的元素。
  • 我的代码还是页面的整个HTML代码?

标签: javascript search


【解决方案1】:

您是在另一个页面上发帖,还是在同一页面上始终从同一位置获得相同的号码? 如果是这样,您可以使用。

     var myvar = document.getElementById('myfield').innerHTML;

【讨论】:

  • 它在任何页面上,但我要找的东西总是在同一个地方。
  • myField 将是您尝试访问的 html 元素的 ID。
【解决方案2】:

您需要做的是确保包含价格信息的元素(在您的情况下是 b 标签 [顺便说一下,是 not recommended])具有 id 或唯一类(无意义的短语)适用于它。这样,我们可以专门使用 Javascript 定位该元素并提取其文本。

应用id 或类后,您的代码应如下所示:

var myElem = document.getElementById("price"),
    price = myEleme.textContent;

第一行将我们要定位的元素分配给变量myElem。第二行将变量price 设置为元素的文本值。

【讨论】:

    【解决方案3】:
     function xpath(xpath, element) {
            if (!element)
                element = document;
            return document.evaluate(xpath, element, null,
                                     XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        }
    
    var prices  = xpath("//table[@class='ItemSalesTable']/tbody/tr/td[3]");
    //now prices is an array of price elements
    
    prices.snapshotItem(0).innerHTML; // price ( ignore this one )    
    prices.snapshotItem(1).innerHTML; // <b style="color: Green;">R$900</b>
    prices.snapshotItem(2).innerHTML; // <b style="color: Green;">R$975</b>
    prices.snapshotItem(3).innerHTML; // <b style="color: Green;">R$980</b>
    
    prices.snapshotLength(); // 11
    

    【讨论】:

    • @nPwn 你是怎么尝试的?你的程序是用户脚本吗?你把它放在你的代码中的什么地方?我在 javascript 控制台上试了一下,效果很好。
    • 好吧,我让用户将链接粘贴到提示符中,然后页面将其带到该页面。位置更改后脚本是否停止运行...?
    【解决方案4】:

    在您提到的网站上的任何产品页面上,如果在正确的页面上(例如http://www.roblox.com/Red-RAWR-item?id=66330295),您可以通过以下方式找到最便宜的价格:

    if (window.location.href.match(/http:\/\/www.roblox.com\/.*?\?id=\d+/) && document.getElementById('UserSalesLink')) {
        var priceElement = document.getElementById('UserSalesTab').getElementsByTagName('tr')[1].getElementsByTagName('td')[2].getElementsByTagName('b')[0]; // Get the element that contains the price
        var price = parseInt(priceElement.innerHTML.match(/\d+/)); // Store the price as an int
    }
    

    使用该代码,您最终会得到一个变量 price,它是一个包含页面上最便宜价格的 int。

    我使用 javascript 的 getElementById() 方法和 getElementsByTagName() 方法将其缩小到正确的 div,然后我使用 match() 方法从该元素中提取数字,并使用 parseInt() 方法存储价格作为整数而不是字符串。

    【讨论】:

    • 我的内容...?这是一种方法还是我必须编写自己的变量,如 document.math...?
    • myContent 将是您的内容的变量(字符串),其中包含价格和其他内容。
    • 喜欢我正在寻找的...?
    • 这将是你的整个&lt;b style="color: Green;"&gt;R$980&lt;/b&gt; 存储在一个变量中
    • 要将其存储在 html 页面的变量中,您必须给它一个唯一的 id 以便您可以使用 document.getElementById('myElementID').innerHTML 或使用其他方法,例如 getElementByTagName()(不推荐)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多