开发者问题收集

未捕获的类型错误:无法读取 null 的属性“val”

2014-06-01
7470

我是 jquery 新手,当我尝试执行以下操作时,出现错误“Uncaught TypeError:无法读取 null 的属性‘val’”。 我试图调用一个函数,该函数将通过调用函数的 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())

        }

    }
}

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

3个回答

有 5 个问题:

  • Fn_Save 缺少 ()
  • 没有带有 input1 id 的元素,或者您的代码在 DOM 准备就绪之前就执行了。
  • HTMLElement 没有 .val 属性。它是 .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";
        }
    }        
Amit Joki
2014-06-01

如果 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");
JLRishe
2014-06-01

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

user3696176
2014-06-01