Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2018, 16:47
Новичок на форуме
Отправить личное сообщение для LeoBB Посмотреть профиль Найти все сообщения от LeoBB
 
Регистрация: 18.05.2018
Сообщений: 4

Починить пользовательский скрипт / split и сравнение
Здравствуйте,

есть пользовательский скрипт, раньше работал, а теперь нет результата, смысл скрипта: на странице появляются динамические ссылки на товары с тегом h3, внутри текст, заканчивается ценой. Нужно отсекать весь текст до цены, затем сравнивать их между собой и выбирать самое большое значение. Исходный код страницы:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
</head>
<body>
<a href="https://xxx.com/details/18705731"><h3>(Standard) | Item | 9 pics | Price: US$0.27</h3>
</a>
Item
<br>Wed, 12 Oct 2016 04:00:56 +0000
<hr>
<a href=""><h3></h3></a><br><hr>
<a href=""><h3></h3></a><br><hr>...


Вот сам скрипт:

// ==UserScript==
// @name         myScript
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  script!
// @include      xxx.com/rss.php
// @include      *xxx/*
// @include      [url]http://rutr*[/url]
// @include      [url]https://rutr*[/url]
// @require  [url]http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js[/url]
// @require  [url]https://gist.github.com/raw/2625891/waitForKeyElements.js[/url]
// @author       You
// @match        [url]https://mail.google.com/mail/u/0/#inbox[/url]
// @grant        none
// ==/UserScript==
(function() {
    'use strict';

                var job = $('a h3:contains("$")');
                var i = 0;
                var prices = [];
                var links = [];
                var max = 0;
                var link = '';
                job.each(function(){
                    prices[i] = $(this).html().split('$')[1];
                    links[i] = $(this).parent().attr('href');
                    i++;
                });
                for (var i = 0; i<prices.length; i++) {
                    if (max < parseInt(prices[i])) {
                        max = prices[i];
                        link = links[i];
                    }
                }
                if ((max > 0) && link && link.length) {
                    window.open(link,"_self");
                }
})();


Не подскажете, в чем ошибка?

Последний раз редактировалось LeoBB, 18.05.2018 в 17:39.
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2018, 17:51
Новичок на форуме
Отправить личное сообщение для LeoBB Посмотреть профиль Найти все сообщения от LeoBB
 
Регистрация: 18.05.2018
Сообщений: 4

Не показывает никаких ошибок, дебаггер в Хроме останавливается прямо в начале скрипта, на строке

debugger;(function() {


В firefox ошибки JS:
IndexedDB UnknownErr: ActorsParent.cpp:573 <unbekannt>
UnknownError <unbekannt>
IndexedDB UnknownErr: ActorsParent.cpp:573 <unbekannt>
UnknownError <unbekannt>
IndexedDB UnknownErr: ActorsParent.cpp:573 <unbekannt>
UnknownError


Использую Tampermonkey в Chrome и Greasemonkey в Firefox (откатился на старые версии для этого браузера, т.к. на новых версиях там все поломано).
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2018, 18:09
Новичок на форуме
Отправить личное сообщение для LeoBB Посмотреть профиль Найти все сообщения от LeoBB
 
Регистрация: 18.05.2018
Сообщений: 4

SCRIPT RUN TIME[myScript]: 21.000244140625ms

больше ничего нет.

А то, что дебаггер останавливается - он и на работающих останавливается, так что, наверное, не в тему.

P.S. Обновил текст скрипта, добавил заголовки Tampermonkey

Последний раз редактировалось LeoBB, 18.05.2018 в 18:11.
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2018, 18:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var max = 0, link;
$('h3').each(function() {
    var d = this.textContent.match(/\d+\.\d+$/)[0];
    if(d > max) {
        max = d;
        link = this.parentNode.href
    }
})
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2018, 01:38
Новичок на форуме
Отправить личное сообщение для LeoBB Посмотреть профиль Найти все сообщения от LeoBB
 
Регистрация: 18.05.2018
Сообщений: 4

Laimas, большущее спасибо! Теперь все работает. Сделал так:

var job = $('a h3:contains("$")');
                var i = 0;
                var prices = [];
                var links = [];
                var max = 0.26, link;
                $('h3').each(function() {
                var d = this.textContent.match(/\d+\.\d+$/)[0];
                if(d > max) {
                max = d;
               link = this.parentNode.href
                window.open(link,"_self")
                }
                })
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пользовательский скрипт bioz00 Общие вопросы Javascript 1 09.04.2013 21:55
Почему скрипт не работает с данными, которые вернул другой скрипт? Rooner jQuery 3 20.09.2012 14:56
Пользовательский JS скрипт для Опера Space-06 Events/DOM/Window 1 29.02.2012 13:27
Изменить скрипт Изучаю_JS Общие вопросы Javascript 0 12.02.2012 22:05
Пользовательский скрипт для выбора option в select по умолчанию justalittleperson Элементы интерфейса 1 04.10.2010 06:13