为什么javascript有时会输出未定义的变量

时间:2012-12-24 08:28:23

标签: javascript

我有一个小按钮,按下时会要求输入名称,然后将输入添加到URL,然后由PHP处理。我的代码如下。

    function staff_prompt(url)
  {
  var url = url;
  var staffname=prompt("Please enter your Name below:","Staff Member Name");
  if (staffname == null)  {
  } 
  else if (staffname == "Staff Member Name") {
  alert('You must enter a value to continue');
  staff_prompt();
  }
  else if (staffname == "") {
  alert('You must enter a value to continue');
  staff_prompt();
  }
  else {
  var windowgo = url + "&staffmember=" + staffname;
  window.location = windowgo;
 }
 } 

我的按钮代码位于

之下
onclick="staff_prompt('index.php?app=orders&page=action&action=go_orderedviewtype=<?php echo $viewtype ?>&orderid=<?php echo $orderid ?>') 

有时效果很好,但有时候它似乎会转到“http://undefined....ect” 我无法复制这种情况,有时它会发生,有时候不会发生

我在想,也许代码不是很好......为什么javascript有时候不能检测变量'url'。

3 个答案:

答案 0 :(得分:3)

是的,您的代码存在问题。

如果情况与条件相同,您正在呼叫其他人的staff_prompt()功能。您尚未将url作为参数传递给它,因此它肯定会将其视为undefined

答案 1 :(得分:2)

此处未定义网址。您正在使用未定义的参数调用该函数:

staff_prompt();

所以,只要你进入其他if-s,你就会获得未定义的URL。

将您的代码更改为staff_prompt(url);,您就可以了。

答案 2 :(得分:0)

如果在发生错误后调用staff_prompt,则不会传递它。

function staff_prompt(url) {
    var url = url;
    var staffname=prompt("Please enter your Name below:","Staff Member Name");
    if (staffname == null)  {
    } else if (staffname == "Staff Member Name") {
        alert('You must enter a value to continue');
        staff_prompt(url);
    } else if (staffname == "") {
        alert('You must enter a value to continue');
        staff_prompt(url);
    } else {
        var windowgo = url + "&staffmember=" + staffname;
        window.location = windowgo;
    }
}

示例:http://jsfiddle.net/burlak/CsrTc/3/