Javascript 无法从表单中获取复选框的状态

Javascript 无法从表单中获取复选框的状态,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我正在尝试运行以下函数: var getFavorite = function(){ var favCheck = document.querySelector("#fav"); var status; if(favCheck.checked){ status = "Yes!"; }else{ status = "No"; } return status; }; html表单包含以下内容: <form action="#" id="flavorForm">

我正在尝试运行以下函数:

var getFavorite = function(){
var favCheck = document.querySelector("#fav");
var status;

if(favCheck.checked){
    status = "Yes!";
}else{
    status = "No";
}
return status;
};
html表单包含以下内容:

<form action="#" id="flavorForm">
    <ul id="errors"></ul>

    <div data-role="fieldcontain">
      <label for="drug">Flavor: </label>
        <input type="text" name="flavor" id="flavor" class="required" />
    </div>  
    <div data-role="fieldcontain">
        <label for="favorite">Favorite?</label>
        <input type="checkbox" id="favorite" value="Yes" class="checkbox" />

    </div>
    <div data-role="fieldcontain">
        <label for="notes">Notes: </label>
        <textarea name="notes" id="notes"></textarea>
    </div>  
        <input type="submit" value="Save Flavor" id="submitFlavor" data-theme="b" />

</form>

    风味: 最喜欢的 笔记:

    favCheck的值应该来自第二个。。。表格的块。但每当我在表单上输入一个值时,无论我是否选中复选框,都会得到一个“TypeError:favCheck为null”。我正在使用jQuery检索这些值。如有任何建议,我们将不胜感激。谢谢。

    因为您使用的是ID而不是类

    favcheck = document.getElementById('fav');
    

    此外,您需要实际使用该ID
    fav
    ,而不是像现在这样使用
    favorite

    您拼错了ID名称。请使用
    #favorite
    而不是
    #fav

    试试这个

    var getFavorite = function(){
    var favCheck = document.querySelector("#favorite");
    var status;
    
    if(favCheck.checked){
        status = "Yes!";
    }else{
        status = "No";
    }
    return status;
    };
    
    HTML
    jQuery
    $('#checkme')。更改(函数(){
    var checkbox=$('#checkme').prop('checked');
    如果(复选框){
    警报(“复选框已选中”);
    }否则{
    警报(“未选中复选框”);
    }
    });
    http://jsfiddle.net/rjE8P/
    
    这些将给出相同的结果您没有任何ID等于fav的元素…
    var getFavorite=function(){return document.getElementById(“#favorite”).checked;}复选框的更改无关紧要,除非有一个事件监听器,这在操作代码中没有显示。他发布的函数将在页面加载开始时获取值,而不获取任何内容else@Deryck我想OP已经使用函数getFavorite作为一些函数的回调event@A.Wolff这是一种可能性,但没有内联的,你知道当我们假设时会发生什么;)@德瑞克:我知道;)但很明显,OP使用了错误的ID,顺便说一句,他告诉我们他得到了null元素的错误
    
    HTML
    
    <input type="checkbox" id="checkme" checked="checked" />
    
    jQuery
    
    
    $('#checkme').change(function () {
        var checkbox = $('#checkme').prop('checked');
        if (checkbox) {
            alert('checkbox is checked');
        } else {
            alert('checkbox is not checked');
        }
    });
    
    
    http://jsfiddle.net/rjE8P/
    
    $('#favorite').change(function(){
      var status;
      if($(this).is(':checked')) {
         status = 'Yes';
      }
      else{
         status = "No";
      }
      alert(status);
    });