什么可能导致js函数被定义为无法被调用

时间:2015-07-03 16:54:18

标签: javascript

我有一些JS代码,当点击按钮时会向页面添加元素但由于某些原因,当按下按钮时它告诉我我试图调用的函数返回错误

  

未捕获的TypeError:addstep不是函数

     

buttons.onclick @ add.js:124

function addstep(x)
{
    if(x === undefined)
    {
        x = 1;
    }

    // Define Variables
    var steps = document.getElementById("steps");
    var addstep = document.getElementById('addstep');
    var newstep = document.createElement("textarea");
    newstep.name = "step" + x;
    newstep.idName   = "txtr";
    newstep.className = "txtr";

    var step = "Step " + x + ": ";

    steps.innerHTML = step;
    steps.appendChild(newstep);

    x++;

    var buttons = document.createElement("button");
    var text    = document.createTextNode("Add Step");
    buttons.appendChild(text);
    buttons.onclick = function(){ addstep(x);};
    addstep.appendChild(buttons);    
}

我似乎无法在我的代码中找到问题我在运行时加载此代码但是按下按钮时却没有?

2 个答案:

答案 0 :(得分:4)

当你这样做时

var addstep = document.getElementById('addstep');

您定义了一个名为addstep的新变量。这一个遮蔽了外部的一个,它是你从函数内部看到的唯一一个。它不是一个功能,因此无法调用。

最简单的解决方案是给这个变量另一个名字。

答案 1 :(得分:0)

小心,在js中,函数也是变量,不要在其他地方更改变量吗?

在下面的示例中,您可以看到 asd 不再是一个函数而是一个数字。尝试重命名。



<script>
  function addstep(x)
  {
  }
  
  addstep = 1;
  alert("typeof asd = " + typeof(asd));
</script>
&#13;
&#13;
&#13;