Javascript数组参数问题
我有以下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
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;i if(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)
。这些名称相同,这是一个错误。无法调用第一个函数。