Javascript 如何将对象中的数字与dom中的文本进行比较?
我有一个函数,它从1-6中选择一个随机数,然后将它附加到DOM中。我试图将该数字与DOM中当前div中的数字进行比较。所以我将这些数字存储在一个名为cards的var中。当我输入console.log()变量时,它返回一个数组。我将该数组转换为字符串,然后检索文本。比较数字的最佳方法是什么?我应该做一个for循环,如果这些数字中的任何一个与随机抽取的数字匹配,我应该采取一些措施吗?有人能给我举个例子吗?我的代码如下Javascript 如何将对象中的数字与dom中的文本进行比较?,javascript,dom,for-loop,random,Javascript,Dom,For Loop,Random,我有一个函数,它从1-6中选择一个随机数,然后将它附加到DOM中。我试图将该数字与DOM中当前div中的数字进行比较。所以我将这些数字存储在一个名为cards的var中。当我输入console.log()变量时,它返回一个数组。我将该数组转换为字符串,然后检索文本。比较数字的最佳方法是什么?我应该做一个for循环,如果这些数字中的任何一个与随机抽取的数字匹配,我应该采取一些措施吗?有人能给我举个例子吗?我的代码如下 $(function(){ function dice1(){
$(function(){
function dice1(){
var randomNumber = Math.floor(Math.random() * 6) + 1;
$('#instructions').text(randomNumber);
return randomNumber;
}
function dice2(){
var randomNumber = Math.floor(Math.random() * 6) + 1;
$('#instructions2').text(randomNumber);
return randomNumber;
}
$('#dice1').click(function() {
dice1();
var cards = $('#cards div');
var single = cards.toString();
console.log(cards.text());
if ($('#instructions').text() == cards.text()) {
console.log('match');
}
});
$('#dice2').click(function(){
dice2();
});
});
<section id="container">
<div id="cards">
<div id="1">1</div>
<div id="2">2</div>
<div id="3">3</div>
<div id="4">4</div>
<div id="5">5</div>
<div id="6">6</div>
<div id="7">7</div>
<div id="8">8</div>
<div id="9">9</div>
</div>
<section>
<button id="dice1">Roll dice1</button>
<button id="dice2">Roll dice2</button>
<div id="instructions"></div>
<div id="instructions2"></div>
</section>
</section>
$(函数(){
函数1(){
var randomNumber=Math.floor(Math.random()*6)+1;
$(“#说明”).text(随机数);
返回随机数;
}
函数2(){
var randomNumber=Math.floor(Math.random()*6)+1;
$('#说明2')。文本(随机数);
返回随机数;
}
$('#dice1')。单击(函数(){
dice1();
var cards=$(“#cards div”);
var single=cards.toString();
console.log(cards.text());
if($(“#说明”).text()==cards.text()){
console.log('match');
}
});
$('#dice2')。单击(函数(){
dice2();
});
});
1.
2.
3.
4.
5.
6.
7.
8.
9
掷骰子1
掷骰子2
为什么不将卡直接存储在如下阵列中:
var cards = [1,2,3,4,5,6,7,8,9];
var number = parseInt($("#instructions").text());
if(cards.indexOf(number) >= 0)
console.log("Number found");
else
console.log("Number not found");
然后进行如下比较:
var cards = [1,2,3,4,5,6,7,8,9];
var number = parseInt($("#instructions").text());
if(cards.indexOf(number) >= 0)
console.log("Number found");
else
console.log("Number not found");
如果你真的想按自己的方式做,你可以这样做:
$(".cards div").each(function(){
var number = parseInt($("#instructions").text());
var card = parseInt($(this).text());
if(card == number)
console.log("Number found");
});
您确实可以使用for循环来实现:
$('#dice1').click(function() {
var random_number = dice1();
var cards = $('#cards div');
for(var i = 0; i < cards.length; i++ ) {
if($(this).html() == random_number) {
alert('Do something!');
}
}
console.log(cards.text());
if ($('#instructions').text() == cards.text()) {
console.log('match');
}
});
但是请记住,ID属性不能以数字开头,因此我将在此处创建自己的属性:
<div id="cards">
<div data-number="1">1</div>
<div data-number="2">2</div>
<div data-number="3">3</div>
<div data-number="4">4</div>
<div data-number="5">5</div>
<div data-number="6">6</div>
<div data-number="7">7</div>
<div data-number="8">8</div>
<div data-number="9">9</div>
</div>
您可以这样做:
var cards = [1,2,3,4,5,6,7,8,9];
var number = parseInt($("#instructions").text());
if(cards.indexOf(number) >= 0)
console.log("Number found");
else
console.log("Number not found");
新JS:
$(function () {
function dice1() {
var randomNumber = Math.floor(Math.random() * 6) + 1;
$('#instructions').text(randomNumber);
return randomNumber;
}
function dice2() {
var randomNumber = Math.floor(Math.random() * 6) + 1;
$('#instructions2').text(randomNumber);
return randomNumber;
}
$('#dice1').click(function () {
var num1 = dice1();
$('#cards div').each(function (index,item) {
if ($(item).text() == num1) {
$(item).css("color", "red");
}
});
$('#dice2').click(function () {
dice2();
});
});
});
我刚刚学会了一种动态解决问题的方法,我个人认为这更容易遵循
<div data-hook="cards" id="cards">
<div data-value="1" id="1">1</div>
<div data-value="2" id="2">2</div>
<div data-value="3" id="3">3</div>
<div data-value="4" id="4">4</div>
<div data-value="5" id="5">5</div>
<div data-value="6" id="6">6</div>
<div data-value="7" id="7">7</div>
<div data-value="8" id="8">8</div>
<div data-value="9" id="9">9</div>
</div>
$(function(){
function dice1(){
var randomNumber = Math.floor(Math.random() * 6) + 1;
$('#instructions').text(randomNumber);
return randomNumber;
}
$('#dice1').click(function() {
dice1();
$('[data-hook=cards] [data-value]').find('#instructions'); //'data-hook=cards] [data-value]' selects the element by attr'
var rolledNum = $('#instructions').text(),
selector = '[data-value=' + rolledNum + ']',
$card = $('[data-hook=cards]').find(selector);
//Instead of using an $.each or for loop to compare two numbers I am taking the random number and finding it on the div and then modifying the div.
console.log($card);
$card.css({'opacity':.2});
});
});
1.
2.
3.
4.
5.
6.
7.
8.
9
$(函数(){
函数1(){
var randomNumber=Math.floor(Math.random()*6)+1;
$(“#说明”).text(随机数);
返回随机数;
}
$('#dice1')。单击(函数(){
dice1();
$(“[data hook=cards][data value]”)。查找(“#说明”);//“data-hook=cards][data value]”按属性选择元素
var rolledNum=$(“#指令”).text(),
选择器='[数据值='+rolledNum+']',
$card=$('[datahook=cards]')。查找(选择器);
//我没有使用$.each或for循环来比较两个数字,而是使用随机数并在div中找到它,然后修改div。
控制台日志($卡);
$card.css({'opacity':.2});
});
});