[英]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? 任何想法为什么它不起作用?
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.