将生成的字符串作为变量传递给javascript函数

时间:2012-05-20 05:31:29

标签: javascript variables

这是我的HTML:

<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 个答案:

答案 0 :(得分:2)

试试这个:

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

请参阅DEMO

答案 1 :(得分: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>