未捕获的TypeError:无法读取null的属性'val'

时间:2014-06-01 06:29:15

标签: javascript jquery

我是jquery的新手,我收到了错误" Uncaught TypeError:无法读取属性' val' of null"当我尝试做以下事情。    我试图通过调用函数的id来调用一个函数,该函数将检查我的文本框的值是否为null并将其赋值为零。我知道我可以直接分配,但是有很多这样的东西,我觉得调用函数是要走的路。

这是我的代码:

function Fn_Save {

    function Fn_NullConvertor(input1) {

        if (document.getElementById("input1").val == "") {
            document.getElementById("input1").val == 1;
        }
    }

    if (confirm("Save?")) {

        Fn_NullConvertor(txtNum_Tracks);
        var params = {
            Num_Tracks: $.trim($("#txtNum_Tracks").val())

        }

    }
}

感谢您的时间,我真的很感激!

4 个答案:

答案 0 :(得分:1)

有5个问题:

  • Fn_Save缺少()
  • 没有input1 id的元素,或者您的代码在DOM准备好之前就已执行。
  • .val没有HTMLElement属性。它是.value
  • 您正在使用==进行作业
  • 根据我的想法,你在追求,然后

此:

    function Fn_NullConvertor(input1) {
        if (document.getElementById("input1").val == "") {
            document.getElementById("input1").val == 1;
        }
    }

应该是:

    function Fn_NullConvertor(input1) {
        if (document.getElementById(input1).value == "") {
            document.getElementById(input1).value = "1";
        }
    }        

答案 1 :(得分:1)

如果input1是元素ID的参数,那么您不应该有引号。另请注意:

输入元素没有val属性。该物业被称为“价值”。
要分配值,您需要使用=运算符,而不是==

function Fn_NullConvertor(input1) {
    var el = document.getElementById(input1);

    if (!el) {
        throw Error("No element with the ID " + input1 + " was found.");
    }

    if (!el.value) {
        el.value = 1;
    }
}

此外,当您将ID传入您的函数时,ID 应该在其周围加上引号:

Fn_NullConvertor("txtNum_Tracks");

答案 2 :(得分:0)

该错误表示无法找到id为“input1”的html元素。您应该检查页面上是否有类似<input id="input1" type="text">的内容。

答案 3 :(得分:0)

它应该是.value因为您调用纯javascript。 如果使用jquery,它应该是.val()