如果选中复选框时的语句?

时间:2016-11-02 14:16:40

标签: javascript if-statement checkbox global getelementbyid

这里有一个小问题,我正在尝试执行一个巨大的计算,它将在一个值范围内随机确定一些东西。我希望用户自己确定这个范围,并让他选择是否要添加最大值或最小值。基本上,现在一切正常,但我试图在开头添加一个“if”语句来检查是否选中了复选框以便提示正确的问题。问题是,我现在正在编写它的方式使得无法读取程序:它什么都不做。显示的错误消息是:

  

未捕获的TypeError:无法读取null(...)的属性'checked'。

我尝试了一些东西,当我自己设置值时,它起作用,所以问题实际上是“if”语句。以下是我的全球变量和不起作用的部分:

    var maxdesiredvalue, mindesiredvalue;

                    if (document.getElementById("min").checked == false) {
                        mindesiredvalue = 0.00
                    }
                    else {
                    mindesiredvalue = window.prompt("Valeur minimale désirée:"); 
                    mindesiredvalue = parseInt(mindesiredvalue)}

                    if (document.getElementById("max").checked == false) {
                        maxdesiredvalue = 9999999.99
                    }
                    else {
                    maxdesiredvalue = window.prompt("Valeur maximale désirée:");
                    maxdesiredvalue = parseInt(maxdesiredvalue)}

        function RandWeap() {
             /*Huge function here determining a value and repeating until it 
             is between mindesiredvalue and maxdesiredvalue*/
        }

复选框的写法如下:

<body>
    <form>
    <i> Press F5 to clear or to get 1 random weapon </i> <br> <br>
    Min price: <input type="checkbox" id="min"> <br>
    Max price: <input type="checkbox" id="max"> <br> <br>
    <button type="button" onclick="RandWeap()">Add a random weapon to list</button>
    </form>
</body>

有关如何使其正常工作的想法吗?

谢谢!

编辑

好吧,所以基本上如果我们可以给出类似但真正简化的例子,它看起来像这样:

<html>
<meta charset="utf-8">
<script type="text/javascript" language="JavaScript">

var desiredResult;

desiredResult = (parseInt(window.prompt("Valeur désirée")))

    function dice(){

    var result, missed;

    result = (Math.floor(Math.random() * 6) + 1)

    if (desiredResult == result) {document.body.innerHTML += result}
    else if (desiredResult != result) {dice()}

    }

window.onload = dice

</script>
<body>
    Choose value: <input type="checkbox" id="choose"> <br> <br>
    <button type="button" onclick="dice()">Roll dice!</button>
</body>
</html>

因此我们提示所需的值,然后重复该函数,直到它是我们想要的值。现在,应该对此代码进行哪些编辑,以便仅在复选框为checke时才提示所需的值?因此,onload当然不会被检查,所以它只会输入随机值。然后,当我们单击一个按钮时,它会重复此步骤,但如果我们刚刚检查了该框,它将提示所需的值。我不确定它是否清楚......但基本上这就是我想知道的。如果有人知道我需要添加的代码,那将是非常好的!

2 个答案:

答案 0 :(得分:1)

您可以使用event之类的onclick

使用点击event的纯javascript示例:

var isCheckedWithGlobalVariable = false;
document.getElementById('myInput').onclick = function() {
    if (this.checked == true) {
        // the element is checked
        isCheckedWithGlobalVariable = true;
    }
};

也许您需要在多个元素上使用此功能,因此您可以将querySelectorAllfor一起使用。 例如:

var isCheckedWithGlobalVariable = false;
var elements = document.querySelectorAll('input[type=checkbox]');
for (var i = 0; i < elements.lenght; i++) {
    elements[i].onclick = function() {
        if (this.checked == true) {
            // checked
            isCheckedWithGlobalVariable = true;
        }
    };
}

在jQuery上,您可以将:checked选择器与click事件一起使用:

var isCheckedWithGlobalVariable = false;
$('#myInput').click(function() {
    if ($(this).is(':checked')) {
        // checked
        isCheckedWithGlobalVariable = true;
    }
})

OR

var isCheckedWithGlobalVariable = false;
$('#myInput:checked').click(function() {
   // only if it is checked
   isCheckedWithGlobalVariable = true;
})

或使用多个元素:

var isCheckedWithGlobalVariable = false;
$('input').click(function() {
   if ($(this).is(':checked')) {
       // this element is checked
       isCheckedWithGlobalVariable = true;
   }
})

答案 1 :(得分:0)

我假设您的脚本在您的头部或身体顶部是内联的?如果是这样,问题是您的复选框在脚本运行时不存在。

据推测,您希望在用户单击按钮时提示,在这种情况下,您应该执行以下操作:

a)包裹你的主要&#34;得到最小/最大&#34;函数中的代码,和 b)点击按钮调用该功能。

像这样:

var maxdesiredvalue, mindesiredvalue;

function getMinMax() {
  if (document.getElementById("min").checked == false) {
    mindesiredvalue = 0.00
  } else {
    mindesiredvalue = window.prompt("Valeur minimale désirée:");
    mindesiredvalue = parseInt(mindesiredvalue)
  }

  if (document.getElementById("max").checked == false) {
    maxdesiredvalue = 9999999.99
  } else {
    maxdesiredvalue = window.prompt("Valeur maximale désirée:");
    maxdesiredvalue = parseInt(maxdesiredvalue)
  }
}

function RandWeap() {
  getMinMax();
  alert("Min: " + mindesiredvalue + " Max: " + maxdesiredvalue);
  //Huge function here determining a value and repeating until it 
  //is between mindesiredvalue and maxdesiredvalue
}

有更优雅的解决方案,但这是它的本质。

JS小提琴:https://jsfiddle.net/ebwxcvg9/