2012-05-20 36 views
0

这是我的html:通行证生成的字符串作为JavaScript函数变量

<form> 
<input type='text' name='campo1' value='valor0'/> 
<input type='text' name='campo2' value='valor1'/> 
<input type='text' name='campo3' value='valor2'/> 
<input type='text' name='campo4' value='valor3'/> 
<input type='text' name='campo5' value='valor4'/> 
<input type='text' name='campo6' value='valor5'/> 
<input type="button" onclick="inpt();"> 
</form> 

我创建了一个功能,使一个字符串,并将它传递给另一个函数 字符串包含的所有值与输入文本匹配输入名称中的字符串'campos'。

<script type="text/javascript"> 
var tags_inpt = new Array(); 
var param = "";; 
function inpt() { 
tags_inpt=document.getElementsByTagName('input'); 
var i; 
for (i=0; i<tags_inpt.length; i++) { 
if ((tags_inpt[i].type=='text')&&(tags_inpt[i].name.match(/campo/))){ 
param += '"' +tags_inpt[i].value +'",'; 
} 
} 
alert(param + '"A"'); // this print -> "valor0","valor1","valor2","valor3","valor4","valor5","A" OK!! 
// call funcion2() 
funcion2("valor0","valor1","valor2","valor3","valor4","valor5","A"); // this result in valor1 in funcion2() OK!! 
funcion2(param + '"A"'); // this return 'undefined' --> BAD 
} 

function funcion2(a,b,c,d,e,f,g){ 
var z = b; 
alert (z); 
} 
</script> 

当使用PARAM变量动态传递参数给funcion2(),我得到了一个未定义的值。

什么是正确的做法?

感谢

回答

2

试试这个:

funcion2.apply(window, (param + ',"A"').split(",")); 

DEMO

1

不要使用字符串连接这一点,这是容易根据你的输入错误。改用数组:

<script type="text/javascript"> 
function inpt() { 
    var tags_inpt = document.getElementsByTagName('input'); 
    var matches = []; 
    for (var i=0; i<tags_inpt.length; ++i) { 
    if ((tags_inpt[i].type=='text') && (tags_inpt[i].name.match(/campo/))){ 
     matches.push(tags_inpt[i].value); 
    } 
    } 
    matches.push('A'); 
    funcion2.apply(this, matches); 
} 

function funcion2(a,b,c,d,e,f,g) { 
    var z = b; 
    alert (z); 
} 
</script> 
相关问题