【问题标题】:Do not include in random number不包含在随机数中
【发布时间】:2014-01-18 20:42:14
【问题描述】:

我的 javascript 代码有一些问题。我的代码旨在能够查看复选框是否未选中,如果是,它将永远不会作为随机数出现。

<style>
.checkboxdiv {
    display: block;
    margin-left:20px;
    color: #ddd;    
}
</style>
<head>
<script type="text/javascript">
var lotto = function(){
    var TotalMoney = 240;
    var unsold = [];
    var R1 = Math.floor((Math.random() * 24) + 1);
    document.getElementById("1").innerHTML = R1;    
    var R2 = Math.floor((Math.random() * 24) + 1);
    document.getElementById("2").innerHTML = R2;
    if (R2 == R1) {
        var R2 = Math.floor((Math.random() * 24) + 1);
        document.getElementById("2").innerHTML = R2;
    }
    for (var i = 1; i < 25; i++) {
        if (!document.getElementById('P' + i).checked) {
            TotalMoney = TotalMoney - 10;
            unsold.push(i);
        }
    }
    for (var i = 0; i < unsold.length; i++) {
        if (R1 == unsold[i]) {
            var R1 = Math.floor((Math.random() * 24) + 1);
            document.getElementById("1").innerHTML = R1;    
        }
    }

    for (var i = 0; i < unsold.length; i++) {
        if (R2 == unsold[i]) {
            var R2 = Math.floor((Math.random() * 24) + 1);
            document.getElementById("2").innerHTML = R2;    
        }
    }
    document.getElementById('TotalMoney').innerHTML = TotalMoney;
    var prize1 = TotalMoney * 0.5;
    document.getElementById('money1').innerHTML = prize1;
    var prize2 = TotalMoney * 0.2;
    document.getElementById('money2').innerHTML = prize2;
    var profit = TotalMoney * 0.3;
    document.getElementById('prof').innerHTML = profit;
}
</script>
</head>

<body>

<div class="container">
  <div class="sidebar1">
        <div style="margin-top: 20px" class="checkboxdiv"><input type="checkbox" class="heckboxs" id="P1" checked="checked" />1</div>
        <div class="checkboxdiv"><input type="checkbox" class="heckboxs" id="P2" checked="checked" />2</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P3" checked="checked" />3</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P4" checked="checked" />4</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P5" checked="checked" />5</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P6" checked="checked" />6</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P7" checked="checked" />7</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P8" checked="checked" />8</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P9" checked="checked" />9</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P10" checked="checked" />10</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P11" checked="checked" />11</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P12" checked="checked" />12</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P13" checked="checked" />13</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P14" checked="checked" />14</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P15" checked="checked" />15</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P16" checked="checked" />16</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P17" checked="checked" />17</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P18" checked="checked" />18</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P19" checked="checked" />19</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P20" checked="checked" />20</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P21" checked="checked" />21</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P22" checked="checked" />22</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P23" checked="checked" />23</div>
        <div class="checkboxdiv"><input type="checkbox" class="chckboxs" id="P24" checked="checked" />24</div>


    <!-- end .sidebar1 --></div>
  <div class="content">
    <div style="margin: 0 auto"><p>Total Money: $<span id="TotalMoney"></span></p></div>
    <div style="margin: 0 auto"><p>Profit: $<span id="prof"></span></p></div>
    <div style="margin: 0 auto"><p>1st Place: <span id="1"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prize Money: $<span id="money1"></span></p></div>
    <div style="margin: 0 auto"><p>2nd Place: <span id="2"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prize Money: $<span id="money2"></span></p></div>
    <button  style="margin-left: 20px" onclick="lotto()">Lotto!</button>
    <span id="test"></span>
    <!-- end .content --></div>
  <!-- end .container --></div>
</body>

【问题讨论】:

  • 请在帖子中包含您的代码...
  • 如果您单击“编辑”,您可以将代码添加到您的问题中,或者添加合理​​的代码摘录,突出显示您遇到问题的地方。如果您还希望包含完整代码的链接,我建议您使用jsfiddle.netjsbin.com,因为在这两个站点上,我们可以看到您的代码实际工作(或自己查看错误)。

标签: javascript random


【解决方案1】:

那么如果被检查然后生成一个随机数呢?如果是这样,这将起作用:http://jsfiddle.net/5zBg6/3/

var choices = [];
$("#run").click(function(){
    choices = [];
    $( "input:checkbox:checked" ).each(function( i,value ) {
        choices.push($(this).attr('value')); 
    });
    var randomItem = Math.ceil(Math.random()*choices.length)-1;
    alert(choices[randomItem]);
});

更新为选择选中项目的随机值。

【讨论】:

  • 您可能想提一下,OP 需要使用 jQuery 才能工作。另外,我相信 OP 的意图是从与实际选中的复选框相关联的数字中随机选择。
  • 是的,这就是我的意思。抱歉,如果不清楚 Spencer Wieczorek
  • Math.ceil(Math.random()*10) 也可以返回0。我认为这不是你的意图?
  • @thgaskell:是的,我只是使用了任何常数和随机数。马上改代码,一会儿就搞定了。
  • 哦,我的意思是 Math.random() 返回一个介于 0(包括)和 1(不包括)之间的数字。所以你有机会得到Math.ceil(0)(返回0)。你应该改用Math.floor(Math.random() * range) + min
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2011-06-07
  • 2021-01-05
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多