2012-05-20 69 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> 
相關問題