效果图:
[JavaScript] 纯文本查看 复制代码 javascript: (function() {
function f() {
var fourStar=0; //四星数量
var fiveStar=0; //五星数量
var final=0; //最后一页抽了多少次
var total=0; //总共多少抽
var flagGolden=0; //找到五星后置为1
var c=0; //第一次到达五星的抽奖次数,用于判断已经有多少抽未出五星
var flag=0; //记录抽到五星前的抽奖数量。
var p=0; //前一页页数
//计算:
function count() {
var tempFour=0; //记录每一页的四星数量
var tempFive=0; //记录每一页的五星数量
var page = document.evaluate('//span[@class="page-item"]/text()',document).iterateNext();//当前页页数
//判断已经有多少抽未出五星:
var golden=document.evaluate('//div[@class="log-item-row"]',document);
var node = golden;
if(flagGolden==0){
while (node){
node=golden.iterateNext(); //枚举下一个元素
if(node!=null){
c++;
if(node.innerHTML.indexOf("item_5") != -1){ //有item_5证明有五星
flagGolden=1;
flag=c-1; //记录已经有多少抽未出五星
}
}
}
}
//记录四星数量:
var xPathResult = document.evaluate('//span[contains(@class, "item_4")]',document);
var node1 = xPathResult;
while (node1){
node1=xPathResult.iterateNext(); //枚举下一个元素
if(node1!=null){
tempFour++;
}
}
fourStar=fourStar+tempFour;
//记录五星数量:
var five=document.evaluate('//span[contains(@class, "item_5")]',document);
var node2=five;
while (node2){
node2=five.iterateNext(); //枚举下一个元素
if(node2!=null){
tempFive++;
}
}
fiveStar=fiveStar+tempFive;
console.log("第"+page.textContent+"页");
console.log("四星数量为:"+fourStar);
console.log("五星数量为:"+fiveStar);
//点击下一页:
function find() {
if(document.evaluate('//*[@id="J_page_wrapper"]/span[3]',document)){//其实这个元素是一直存在的
if(Number(page.textContent)>p){ //所以通过页数判断,是否要点击下一页,但这样会在最后一页计算两次
p=Number(page.textContent);
document.evaluate('//*[@id="J_page_wrapper"]/span[3]',document).iterateNext().click();//点击下一页
setTimeout(count,1000); //设置延时,统计太快会计算有误
}else {
//统计最后一页抽了多少次:
var finish=document.evaluate('//div[@class="log-item-row"]',document);
var node3 = finish;
while (node3){
node3=finish.iterateNext(); //枚举下一个元素
if(node3!=null){
final++; //记录最后一页的抽卡数量。
}
}
total=6*(Number(page.textContent)-1)+final; //总抽卡数量。
console.log("近6个月总共"+String(total)+"抽");
console.log("四星数量为:"+String(fourStar-tempFour)); //-tempFour因为最后一页会计算两次
console.log("五星数量为:"+String(fiveStar-tempFive)); //-tempFive因为最后一页会计算两次
console.log("已经"+String(flag)+"抽未出五星");
alert("近6个月总共"+String(total)+"抽\n"+"四星数量为:"+String(fourStar-tempFour)+"个\n"+"五星数量为:"+String(fiveStar-tempFive)+"个\n"+"已经"+String(flag)+"抽未出金");
}
}
}
find();
}
count();
}
//设置按钮:
var d1 = document.getElementsByClassName('type-select-container')[0];
var d2 = document.createElement('div');
d2.style.cssText = "border: .02rem solid #b5b2ae;border-radius: .05rem;color: #757575;background-color: #dbd7d3;width:150px;height:63.6px;position:relative;left:35px;font-size: .22rem;text-align:center;line-height:63.6px;cursor: pointer;";
d2.setAttribute("title","要先定位到抽奖列表的第一页");
d1.appendChild(d2);
var t2=document.createTextNode("开始抽卡分析");
d2.appendChild(t2);
d2.onclick=f;
})(); |