Jquery函数部分执行/ Uncaught Typeerror:undefined不是函数

时间:2014-07-19 07:36:35

标签: javascript jquery forms web uncaught-typeerror

我正在尝试创建一个简单论坛的一部分,该论坛允许配合鞋码与各自的数量

此信息最终将传递到数据库。现在我有一个部分工作的jquery脚本。我可以输入一个大小,然后将该大小添加到列表中。脚本在这里停止。我的控制台告诉我,我有未捕获的类型错误。

我不知道这意味着什么或我要做什么。我正在学习这一点,所以请善待我。

代码如下

<html>
<head>
<title>Testing page</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>

<body>

<fieldset>
    <legend>ShoeSize</legend>
    Add Size: <input type="text" name="newSize" id="newSize"/>
    <input type="button" value="add" id="addbutton"/>
    <br/>
    Available Sizes: <select name="availableSizes" id="availableSizes" size="1"></select>
    Quantity of Available Size: <input type="text" name="quantOfSize" id="quantOfSize"/>
    <input type="button" value="set" id="setQuant"/>
  </fieldset>
<script type="text/javascript">
$(document).ready(function() {
    $('#addbutton').click(function(){
        var size = $('#newSize').val();
        var sizelist = $('#availableSizes');
        var sizeOption = $('<option value="'+ size +'">'+ size +'</option>');

        sizelist.append(sizeOption);
        size.val('');
        size.reset();
    });
    $('#setQuant').click(function() {
        var quantity = $('#quantOfSize').val();
        if (quantity == " ") {
            alert('Invalid quantity set');
        } else{
            alert('We have ' + quantity +' shoes of '+ 'size '+ size);
        };
    })
});
</script>
</body>
</html>

我还没有测试设定数量按钮。所以,如果它适合你,所有人都会告诉我,如果它没有,那么告诉我我做错了什么。

2 个答案:

答案 0 :(得分:0)

尝试类似这样的事情并删除reset()函数,因为它属于不是输入的形式

    var size = $('#newSize');
    var sizelist = $('#availableSizes');
    var sizeOption = $('<option value="'+ size +'">'+ size.val() +'</option>');
    sizelist.append(sizeOption);
    size.val('');

答案 1 :(得分:0)

您的代码中有2个问题

a)

var size = $('#newSize').val();
size.val('');

这会导致异常,因为一旦你做了&#39; .val&#39;您不再具有对象的引用,而是其值,因此解决方案是使用$('#newSize').val('')或将$('#newSize')转换为变量var size = $('#newSize') - 然后对其进行操作。

b)

您正在引用&#39; size&#39;在您的第二个单击处理程序中,但您的初始变量超出范围,因此您需要再次创建它,但这次从选定的下拉列表中获取它: - )

我已经为您创建了一个包含完整工作代码的JSFiddle:http://jsfiddle.net/EdsonF/QM9Gs/

希望有所帮助

埃德森