IE11无法获得财产'价值'未定义或空引用

时间:2015-12-23 12:37:19

标签: javascript php html internet-explorer

似乎我遇到了令人沮丧的问题而且似乎无法找到答案。 我试图在<td>标记中获取元素的值。 id 到达该功能但由于某种原因我无法获得它的值。

JS

function f(id)
  {
    console.log(id);
    expr=/ /gi;
    value = document.getElementById(id).value;
    value = value.replace(expr, "");

  //remaining code
  }

PHP

print "<td style=\"height:20px;\"><input $disbled type=\"text\" name=\"".$values[$i][0]."\" onChange=\"return f('".$values[$i][0]."')\" value=\"".$values[$i][1]."\" class=\"".$values[$i][2]."\"></td>\n"; 

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

那里有几个问题:

  1. 您的元素根本没有id

  2. 您的代码正在成为The Horror of Implicit Globals 的牺牲品(这是我贫血的小博客上的帖子)

  3. 这是一个固定版本:

    function f(name)
    {
        console.log(name);
        var expr=/ /gi;
        var value = document.querySelector('[name="' + name + '"]').value;
        value = value.replace(expr, "");
        //remaining code
    }
    
    使用querySelector和选择name

    的属性选择器修复了

    #1 通过在f

    中声明局部变量来修复

    #2

    你也可以通过给你的元素id并坚持使用getElementById来修复#1。

答案 1 :(得分:0)

您尝试访问的输入未定义ID属性。您应该添加它以通过getElementById()访问输入对象。

<input $disbled id=\"".$id."\" type=\"text\" name=\"".$values[$i][0]."\" onChange=\"return f('".$values[$i][0]."')\" value=\"".$values[$i][1]."\" class=\"".$values[$i][2]."\">