Jquery 用更高的值替换页面上的值

Jquery 用更高的值替换页面上的值,jquery,html,Jquery,Html,假设我们在一个站点上有这段代码 <p> 30.24 </p> 30.24 如何使用jQuery更改60以下任意数字的值(随机数介于70和120之间,可选小数?使用jQuery选择页面上的所有p元素。然后为html函数提供一个匿名函数来更改每个数字的值 $("p").text(function(i,text){ if(isNaN(text)){ return; } var value = parseFloat(text);

假设我们在一个站点上有这段代码

<p> 30.24 </p>
30.24


如何使用jQuery更改60以下任意数字的值(随机数介于70和120之间,可选小数?

使用jQuery选择页面上的所有
p
元素。然后为
html
函数提供一个匿名函数来更改每个数字的值

$("p").text(function(i,text){
    if(isNaN(text)){
        return;
    } 
    var value = parseFloat(text);
    if(value >= 0 && value > 20 &&  value < 60){
        var replacement = (Math.random() * 51 + 70) + "";
        return replacement.substring(0,(replacement > 100) ? 6:5);
    }
});
$(“p”).text(函数(i,text){
如果(isNaN(文本)){
返回;
} 
var值=parseFloat(文本);
如果(值>=0&&value>20&&value<60){
变量替换=(Math.random()*51+70)+”;
返回替换。子字符串(0,(替换>100)?6:5);
}
});
JS小提琴:

在阅读您的评论后,您似乎希望用一些文本替换这些数字。上面的代码不能满足这个需求。如果您必须替换由文本包围的数字,请考虑使用下面的代码。< /P>
$("p").text(function(i,text){
    var regex = new RegExp('(\\d+(?:.\\d{2})?)', 'g');
    var matches = text.match(regex);

    for(var i = 0; i < matches.length; i++){
        var value = parseFloat(matches[i]);
        if(value >= 0 && value > 20 &&  value < 60){
            text = text.replace(matches[i], (Math.random() * 51 + 70).toFixed(2));
        }
    }
    return text;
});
$(“p”).text(函数(i,text){
var regex=new RegExp(“(\\d+(?:.\\d{2})”,“g”);
var matches=text.match(regex);
对于(var i=0;i=0&&value>20&&value<60){
text=text.replace(匹配[i],(Math.random()*51+70).toFixed(2));
}
}
返回文本;
});
JS Fiddle:

var rand=function(){
返回Math.floor(Math.random()*51+70);
}

如果您已经尝试了(parseFloat($('p').text()),您将如何确定要更改哪些
标记?您尝试了什么吗?,,(可能还有)我想更改该页面上所有低于60的值。如果我想排除0-20,该怎么办?所以不要在0-20之间更改数字?任何反对者都可以解释他们的理由吗?我想改进这段代码。我没有反对,但有一些地方错了。
120-70
应该是
120-70+1
d无论如何,它应该是
51
。OP希望在注释中从
0
排除到
20
,因此它应该是
=0
。多次将字符串与数字进行比较会导致多重强制。可能最好使用
parseFloat
html
解析为一个数字,并且另外,最好使用
text()
而不是
html()
。您也可以使用
someFloatNum.toFixed(2)
获得两个小数。
toFixed
也返回一个字符串,这样您就可以摆脱
+”
hack;)@plalx感谢
toFixed
的建议。它确实整理了代码。
var rand = function(){
    return Math.floor(Math.random() * 51 + 70);
}

if(parseFloat($('p').text())<60){
    $('p').text(rand())
}