Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在间隔上使用正则表达式提取字符串html_Javascript_Html_Regex - Fatal编程技术网

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

Javascript 在间隔上使用正则表达式提取字符串html,javascript,html,regex,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.000000181888854044546

有一个公共网站,其来源如下:

</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 + '%');
}
这几乎是完美的。它获取dayprofitperkhs,但仅在第一个间隔上。 之后,该值不再更新,尽管t9_2已更新


有人吗?

所讨论的变量是
calculateIndexIncome()
函数中的局部变量,因此不能从该函数外部访问它们


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

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

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


这是chrome开发工具的教程:

我不知道该站点在哪里,所以我只是针对这个问题运行这个,但是下面的bookmarklet让我得到了我想要的

正如我在评论中提到的,我对文档正文内部html使用正则表达式,我正在查找
dayprofitperkhs
,并捕获等号右侧的数字和小数分隔符。还试图补偿中间的任何额外空格(
\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);}());
因此,您的最终bookmarklet应该类似于:

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';
}

去抓取窗口文档主体,使用正则表达式提取它<代码>/var dayprofitperkhs=([0-9\.])+\s*$/也许可以找到匹配项。我不知道怎么做,但如果你是说我可以从源代码中提取该字符串,那就太好了!你能详细说明一下吗?很好用!谢谢胜利太快了。。。它只在第一次获取该值,之后该值保持不变。我把它记录了8个小时作为测试,间隔5分钟。t9_2的值每次都不同,但dayprofitperkhs保持不变。这不是一个常数吗?无法从您发布的代码片段中辨别。如果某个后端代码正在注入每次页面刷新,我认为它将改变,除非他们正在做一些上面没有显示的其他事情…修复了它:,需要将w1添加到document.body.innerHTMLOf课程:)您需要在w1窗口上操作。我会找到答案的。
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';
}