编程语言
首页 > 编程语言> > 新手/初学者Javascript请求

新手/初学者Javascript请求

作者:互联网

HTML代码:

<td>
<img src="../images/items/333.png"><br>
<b>Product One</b><br>
(2 in stock)<br>
<i>65 USD</i><br>
<form action="shopping.php?shop=1&amp;item=333&amp;price=65&amp;buy=conf&amp;type=" method="post">
<input name="" value="Buy this item" type="submit">
</form></td>

<td>
<img src="../images/items/444.png"><br>
<b>Product Two</b><br>
(4 in stock)<br>
<i>5 USD</i><br>
<form action="shopping.php?shop=1&amp;item=444&amp;price=5&amp;buy=conf&amp;type=" method="post">
<input name="" value="Buy" type="submit">
</form></td>

这是我正在处理的页面上的html代码,无法更改html代码.
页面上有几个td标签,其中包含您在上面的代码中看到的以下信息.

我想写一个脚本来做这样的事情:

if (document.body.innerHTML.indexOf("Product One") > -1) {
document.location = "shopping.php?shop=1&amp;item="+itemID+"&amp;price="+USD+"&amp;buy=conf&amp;type="
}

在页面的正文/ td中搜索在脚本中指定的“产品名称”,然后找到该URL,然后转到包含需要提取的变量,itemID和USD的URL.

通过使用数字从image.png的s​​rc中提取itemID.例如,../images/items/444.png的itemID为444.

USD从斜体标签之间定义的价格中提取.例如,对于i,5 USD // i的USD的提取值被提取.将是5.

渔获为

我将需要很多if(document.body.innerHTML.indexOf(“ Name”)> -1){document.location =“ shopping.php?shop = 1& amp; item =” itemID“& amp; price =“ USD”& amp; buy = conf& amp; type =“},以适应我要指定的大量产品.我可能要指定“第一个产品到一百个产品”和“子产品A到Z”

我想到的一些处理方式(需要放入javascript代码中)是:

>将我要指定的产品列表放入数组(类似)var list = new Array(“产品一”,“产品二”,“子产品A”);并具有检查页面上是否存在该阵列上显示的任何产品的功能.
>找到产品后,要获取itemID,请从产品的图像src中隔离.png之前和/ items /之后的数字.而要获得USD,请在< i> < / i>标签,并且仅采用数值
>为此,我认为可以使用nextSibling或previousSibing,但是我对此不太确定.
>或者,为了简化操作,可能有一个函数可以立即定位表单的操作值并设置window.location,因为< form action =“ shopping.php?shop = 1& item = 444& price = 5& amp; buy = conf& amp; type =“ method =” post“>
>在使用XPath之前我已经看过了吗?

解决方法:

使用jQuery并不困难-尤其是如果我们将其扩展为搜索不区分大小写的正则表达式.

以下脚本应该与问题中的HTML结构一起使用,如果它准确无误,并且不是AJAX添加的.注意定位产品描述时正则表达式具有的功能.

您可以see the underlying code at work at jsFiddle.

// ==UserScript==
// @name     _Auto-follow targeted product links.
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// ==/UserScript==

var targetList  = [
    "Shoes, pumps",
    "Horse shoes",
    "(?:Red|Pink|Burgundy)\\s+shoes?"
];

/*--- Extend jQuery with a case-insensitive version of contains().
    Also allows regular expressions.
*/
jQuery.extend (
    jQuery.expr[':'].containsCI = function (a, i, m) {
        //--- The next is faster than jQuery(a).text()...
        var sText   = (a.textContent || a.innerText || "");     

        var zRegExp = new RegExp (m[3], 'i');

        return zRegExp.test (sText);
    }
);

$.each (targetList, function (index, value) { 
    var jqSelector          = 'td > b:containsCI("' + value + '")';
    var productFound        = $(jqSelector);
    if (productFound.length) {
        var matchingForm    = productFound.first ().nextAll ("form");
        if (matchingForm.length) {
            alert (productFound.text () );
            document.location   = matchingForm.attr ("action");
        }
    }
} );

标签:greasemonkey,javascript
来源: https://codeday.me/bug/20191201/2079161.html