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

为什么javascript有时会输出未定义的变量,javascript,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 Membe

我有一个小按钮,当按下它时,它会询问一个名字,然后将输入添加到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 ?>') 
onclick=“staff\u prompt('index.php?app=orders&page=action&action=go\u orderedviewtype=&orderid=”)
有时它工作得很好,但有时它似乎会http://undefined....ect" 我无法复制这种情况,有时会发生,有时不会


我在想,也许代码不是很好……为什么javascript有时检测不到变量“url”。

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

staff_prompt();
因此,只要您进入else if-s,您就会得到未定义的url


将代码更改为
staff\u prompt(url);
就可以了。

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

staff_prompt();
因此,只要您进入else if-s,您就会得到未定义的url


将代码更改为
staff\u prompt(url);
,您就没事了。

是的,代码中有问题


您正在从两个else if条件调用
staff\u prompt()
函数&您没有将其中的
url
作为参数传递,因此它肯定会将其视为
未定义的
是的,您的代码中存在问题


您正在从两个else if条件调用
staff\u-prompt()
函数&您没有将其中的
url
作为参数传递,因此当您在错误后调用staff\u-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;
    }
}

示例:

当您在错误后调用staff\u提示符时,您不会传递url

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;
    }
}

示例:

使用qunit测试您的函数使用qunit测试您的函数谢谢-我想这就是为什么它只偶尔发生:)谢谢-我想这就是为什么它只偶尔发生:)