Javascript数组参数问题

Javascript数组参数问题,javascript,arrays,Javascript,Arrays,我有以下Javascript代码: function checkIfValid(){ var form = document.createuserform; var valid = new Array(); for(i = 0; i < 4; i++){ valid[i] = false; } if(form.fName.value == ""){ form.getElementById('fNameStatus').innerH

我有以下Javascript代码:

function checkIfValid(){
    var form = document.createuserform;
    var valid = new Array();

    for(i = 0; i < 4; i++){
    valid[i] = false;
    }

    if(form.fName.value == ""){
    form.getElementById('fNameStatus').innerHTML = "Please Enter Your First Name";
    valid[0] = false;
    }else{
    document.getElementById('fNameStatus').innerHTML = "";
    valid[0] = true;
    }

    if(form.lName.value == ""){
    valid[1] = false;
    }else{
    valid[1] = true;
    }

    if(!isValidEmail){
    valid[2] = false;   
    }else{
    valid[2] = true;
    }

    if(form.pass.value == ""){
    valid[3] = false;
    }else{
    valid[3] = true;
    }

    if(checkIfValid(valid)){
    form.submit();
    }
}

function checkIfValid(arr){
    for(i = 0; i < arr.length; i++){
    if(!arr[i]){
        return false;
    }
    }
    return true;
}

function isValidEmail(){
    var x=document.forms["createuserform"]["email"].value
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
    return false;
    }
    return true;
}
函数checkIfValid(){
var form=document.createuserform;
var valid=新数组();
对于(i=0;i<4;i++){
有效[i]=错误;
}
如果(form.fName.value==“”){
form.getElementById('fNameStatus').innerHTML=“请输入您的名字”;
有效[0]=错误;
}否则{
document.getElementById('fNameStatus')。innerHTML=“”;
有效[0]=true;
}
如果(form.lName.value==“”){
有效[1]=错误;
}否则{
有效[1]=真;
}
如果(!isValidEmail){
有效[2]=错误;
}否则{
有效[2]=真;
}
如果(form.pass.value==“”){
有效[3]=错误;
}否则{
有效[3]=真;
}
如果(检查有效(有效)){
表单提交();
}
}
功能检查有效(arr){
对于(i=0;iif(atpos看起来您可能试图首先调用一个无参数版本的
checkIfValid
,在该版本中,使用单个参数调用同一函数的重载版本

JavaScript没有函数重载


每当调用
checkIfValid
时,就会使用最后一个定义。

您有函数checkIfValid(arr)和checkIfValid()。一个或另一个,而不是两个。正如其他人所说,javascript不支持

,正如其他人所说,您不能在javascript中使用具有不同参数的同一命名函数并期望两者都能工作。只有最后定义的一个函数是活动的。但是,您可以使用单个函数来检查传递了哪些参数,并因此,您可以将两个函数替换为一个函数:

function checkIfValid(arr){
    // if array passed, check it
    if (arr) {
        for(i = 0; i < arr.length; i++){
            if(!arr[i]){
                return false;
            }
        }
        return true;
    }

    // if no array passed, check our form
    var form = document.createuserform;
    var valid = new Array();

    for(i = 0; i < 4; i++){
    valid[i] = false;
    }

    if(form.fName.value == ""){
    form.getElementById('fNameStatus').innerHTML = "Please Enter Your First Name";
    valid[0] = false;
    }else{
    document.getElementById('fNameStatus').innerHTML = "";
    valid[0] = true;
    }

    if(form.lName.value == ""){
    valid[1] = false;
    }else{
    valid[1] = true;
    }

    if(!isValidEmail){
    valid[2] = false;   
    }else{
    valid[2] = true;
    }

    if(form.pass.value == ""){
    valid[3] = false;
    }else{
    valid[3] = true;
    }

    if(checkIfValid(valid)){
    form.submit();
    }
}
功能检查有效(arr){
//如果数组通过,请检查它
如果(arr){
对于(i=0;i
或者,如果第二个函数实际上只是一个辅助函数,而不是第一个函数的重载版本,则只需更改其名称:

function checkIfValid(arr){
    // if no array passed, check our form
    var form = document.createuserform;
    var valid = new Array();

    for(i = 0; i < 4; i++){
    valid[i] = false;
    }

    if(form.fName.value == ""){
    form.getElementById('fNameStatus').innerHTML = "Please Enter Your First Name";
    valid[0] = false;
    }else{
    document.getElementById('fNameStatus').innerHTML = "";
    valid[0] = true;
    }

    if(form.lName.value == ""){
    valid[1] = false;
    }else{
    valid[1] = true;
    }

    if(!isValidEmail){
    valid[2] = false;   
    }else{
    valid[2] = true;
    }

    if(form.pass.value == ""){
    valid[3] = false;
    }else{
    valid[3] = true;
    }

    if(checkIfArrayValid(valid)){
    form.submit();
    }
}

function checkIfArrayValid(arr){
    for(i = 0; i < arr.length; i++){
        if(!arr[i]){
            return false;
        }    
    }
    return true;
}
功能检查有效(arr){
//如果没有传递数组,请检查我们的表单
var form=document.createuserform;
var valid=新数组();
对于(i=0;i<4;i++){
有效[i]=错误;
}
如果(form.fName.value==“”){
form.getElementById('fNameStatus').innerHTML=“请输入您的名字”;
有效[0]=错误;
}否则{
document.getElementById('fNameStatus')。innerHTML=“”;
有效[0]=true;
}
如果(form.lName.value==“”){
有效[1]=错误;
}否则{
有效[1]=真;
}
如果(!isValidEmail){
有效[2]=错误;
}否则{
有效[2]=真;
}
如果(form.pass.value==“”){
有效[3]=错误;
}否则{
有效[3]=真;
}
如果(检查ArrayValid(有效)){
表单提交();
}
}
功能检查ArrayValid(arr){
对于(i=0;i
您有两个同名函数,移动
var valid=new Array()怎么样;
在您的代码示例中,函数行43之外的行是
返回false
。对不起,我不明白?我在哪里重载该方法?我只定义了一次,并且调用了一次…我只想将有效数组传递到checkIfValid函数示例中的第一个函数是
函数checkIfValid()
;示例中的第二个函数是
函数checkIfValid(arr)
。这些名称相同,这是一个错误。无法调用第一个函数。