0

这是我的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(),我得到未定义的值。

做这个的正确方法是什么?

谢谢

4

2 回答 2

2

尝试这个:

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

查看演示

于 2012-05-20T05:35:50.590 回答
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>
于 2012-05-20T05:37:14.753 回答