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