在间隔时使用正则表达式提取字符串html

时间:2015-05-10 04:21:28

标签: javascript html regex

在源代码中有一个公共网站:

</div><script type="text/rocketscript">
function calculateIndexIncome() {
    var khs = $('#t9').val();
    var btcusd = $('#t9_1').val();
    var btckhs = $('#t9_2').val();
    var dayprofitperkhs = 0.00000018188885404454654
    var arr = btcusd.split(' ');
    btcusd = arr[0];

    var totalinvestmentusd = ((khs * btckhs) * btcusd).toFixed(2);
    var totalinvestmentbtc = (khs * btckhs).toFixed(8);
    var dailyincomebtc = (khs * dayprofitperkhs).toFixed(8);
    var dailyincomeusd = ((khs * dayprofitperkhs) * btcusd).toFixed(2);
    var monthlyincomebtc = (dailyincomebtc * 31).toFixed(8);
    var monthlyincomeusd = (dailyincomeusd * 31).toFixed(2);
    var breakevendays = (totalinvestmentusd / dailyincomeusd).toFixed(0);
    var monthlypercentage = ((100 / breakevendays) * 30).toFixed(2);

    $('#tl').html('Total KHS: ' + khs + '<br/>Total Investment: ' + totalinvestmentbtc + ' BTC ($' + totalinvestmentusd + ' USD)<br/><br/>Daily Income: ' + dailyincomebtc + ' BTC ($' + dailyincomeusd + ' USD)<br/>Monthly Income: ' + monthlyincomebtc + ' BTC ($' + monthlyincomeusd + ' USD)<br/><br/>Break Even In: ' + breakevendays + ' Days.<br/><br/>Monthly Rate: ' + monthlypercentage + '%');
}

我需要能够提取两个值:btckhs和dayprofitperkhs。 如果我查看页面源代码,每次刷新时dayprofitperkhs都会有所不同。

编辑:

Jimmy Chandra想出了这个书签:

javascript:
setInterval(logging,60000);
w1 = window.open("https://scrypt.cc/index.php");
function logging(){
console.log (w1.$('#t9_2').val());
var re=/var\s*dayprofitperkhs\s*=\s*([0-9\.]+)\s*/gi;
var matches=re.exec(document.body.innerHTML);
console.log(RegExp.$1);
w1.location.href = 'https://scrypt.cc/index.php';
}

完美无缺。它得到了dayprofitperkhs,但只在第一个间隔。 之后,虽然t9_2已更新,但不再更新该值...

任何?

3 个答案:

答案 0 :(得分:0)

有问题的变量是calculateIndexIncome()函数中的局部变量,所以不,你不能从该函数外部访问它们。

第一个&#34;工作的原因&#34;是因为你没有引用变量,而是引用了值:$('#t9_2').val()。这是一个jquery选择器,它查找ID为t9_2的元素并获取其值。

答案 1 :(得分:0)

你不能访问它,因为它是一个局部变量,它只存在于calculateIndexIncome()函数中。

顺便说一句,您无需打开新窗口来访问变量。您可以使用chrome dev工具直接修改javascript来打印值,或者设置断点来调试代码。

以下是chrome dev工具的教程:https://www.codeschool.com/courses/discover-devtools

答案 2 :(得分:0)

我不知道那个网站在哪里,所以我只是针对这个问题运行这个问题,但是以下的书签让我得到了我想要的东西......

正如我在评论中提到的,我对文档正文内部html使用正则表达式,我正在寻找\s*并捕获等号右侧的数字和小数点分隔符。还试图补偿其间的任何额外空格(RegExp.$1)。 javascript:(function(){var re=/var\s*dayprofitperkhs\s*=\s*([0-9\.]+)\s*/gi;var matches=re.exec(document.body.innerHTML);console.log(RegExp.$1);}()); 给了我正在寻找的号码。

javascript:
setInterval(logging,60000);
w1 = window.open("siteurl.com");
function logging(){
console.log (w1.$('#t9_2').val());
var re=/var\s*dayprofitperkhs\s*=\s*([0-9\.]+)\s*/gi;
var matches=re.exec(w1.document.body.innerHTML);
console.log(RegExp.$1);
w1.location.href = 'siteurl.com';
}

所以你的最终书签应该是这样的:

void inverted_sort(books b[], int size){
    int profit;
    bool swap;

    do{
        swap = false;
        for (int i= 0; i < (size - 1); i++){
            if (b[i].profit < b[i + 1].profit){
                profit = b[i].profit;
                b[i].profit = b[i + 1].profit;
                b[i + 1].profit = profit;
                swap = true;
            }
        }

    } while (swap);
}