简体   繁体   English

jQuery - 将段落中的每个偶数都加粗

[英]jQuery - Making every even number in a paragraph bold

I am working on a puzzle in jQuery. 我正在研究jQuery中的一个难题。 I found out how to generate random numbers, but now I want to iterate over these numbers and make them bold if the number is even. 我发现了如何生成随机数,但现在我想迭代这些数字,如果数字是偶数则将它们变为粗体。

$("button").on("click", function() {
    var countNumbers = Number($("input[type=number]").val());
    for (var i = 0; i < countNumbers; i++) {
        var rand = Math.floor(Math.random() * 15000);
        $("#numbers").text($("#numbers").text() + rand + " ");
    }

    var numbers = $("#numbers").text().split(' ');
    for (var i = 0; i < numbers; i++) {
        if (Number(numbers[i]) % 2 === 0) {
            numbers[i] = "<span class='bold'>" + numbers[i] + "</span>";
        }
    }
    $("#numbers").html(numbers.join(' '));
});

It seems like the bold class is not getting added to any of the elements. 似乎bold类没有被添加到任何元素中。 Any ideas why it's not working? 任何想法为什么它不起作用?

http://jsfiddle.net/rL3y28cm/ http://jsfiddle.net/rL3y28cm/

You need to change for loop condition to i < numbers.length , use length property to get array size 您需要将for循环条件更改为i < numbers.length ,使用length属性来获取数组大小

 $("button").on("click", function() { var countNumbers = Number($("input[type=number]").val()); for (var i = 0; i < countNumbers; i++) { var rand = Math.floor(Math.random() * 15000); $("#numbers").text($("#numbers").text() + rand + " "); } var numbers = $("#numbers").text().split(' '); for (var i = 0; i < numbers.length; i++) { //------------------------^----------- if (Number(numbers[i]) % 2 === 0) { numbers[i] = "<span class='bold'>" + numbers[i] + "</span>"; } } $("#numbers").html(numbers.join(' ')); }); 
 .bold { font-weight: bold } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <input type="number" /> <button>Generate Numbers</button> <p id="numbers"></p> 

Update : You can reduce your code and make it more simple 更新:您可以减少代码并使其更简单

 $("button").on("click", function() { var countNumbers = Number($("input[type=number]").val()); var res = []; // array for storing the random number for (var i = 0; i < countNumbers; i++) { var rand = Math.floor(Math.random() * 15000); // generating random number res.push(rand % 2 == 0 ? "<span class='bold'>" + rand + "</span>" : rand); // checking even or odd and wrapping by span if needed finally pushing the string to array } $("#numbers").html(res.join(' ')); // joining the array value and set it as html }); 
 .bold { font-weight: bold } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <input type="number" /> <button>Generate Numbers</button> <p id="numbers"></p> 

It is easier and more performant to generate the random number, add the span, collect all numbers (with bold or not) into a string, and apply them at once to the HTML: 生成随机数,添加跨度,将所有数字(粗体或非粗体)收集到字符串中,并将它们立即应用于HTML,这样更容易,更高效:

 $("button").on("click", function() { var countNumbers = Number($("input[type=number]").val()); var randStr = ''; for (var i = 0; i < countNumbers; i++) { var rand = Math.floor(Math.random() * 15000); randStr += (rand % 2 === 0 ? "<span class='bold'>" + rand + "</span>" : rand) + ' '; } $("#numbers").html(randStr); }); 
 .bold { font-weight: bold; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="number" /> <button>Generate Numbers</button> <p id="numbers"></p> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM