0

我使用以下代码将一个变量从我的 Java 类传递到我的 Web 视图:

web.loadUrl("javascript:window.onload = function(){setValue(\""+ amount1 +"\");};");

并使用 Java 脚本代码:

function setValue(amount1)
    {
    myValue = amount1;

    document.getElementById("amount").value = myValue;
}

现在我只想在一个函数名 setValue 中传递 2 个变量

有什么想法吗?

4

3 回答 3

1

从表面上看,我会说它很简单

web.loadUrl("javascript:window.onload = function(){setValue(\""+ amount1 +"\",\""+ amount2 +"\");};");

function setValue(amount1, amount2)
{
    myValue1 = amount1;
    myValue2 = amount2;

    document.getElementById("amount1").value = myValue1;
    document.getElementById("amount2").value = myValue2;
}

但是,如果您能多解释一下您在做什么,我们或许能够提供更好的解决方案。

于 2012-08-06T07:45:19.260 回答
0
web.loadUrl("javascript:window.onload = function(){setValue(\""+ amount1 +"\",\""+ amount2 +"\");};");

function setValue(amount1, amount2)
    {
    myValue = amount1;

    document.getElementById("amount").value = myValue;
}

请告诉它是否有效。

于 2012-08-06T07:44:58.987 回答
0

如果你走这条路,虽然我确信你正在做的事情有更优雅的解决方案......你最好发送一个包含你希望设置的所有键和值的对象:

setValue({amount1:'amount1', amount2:'amount2'});

这种结构比定义单独的变量更具可扩展性。您需要做的就是确保您的键通过某种标准化的命名约定与它们的目标输入相关联,并且您可以使用如下函数:

function(obj){
  var i, elm;
  for( i in obj ) {
    if ( (elm = document.getElementById(i)) ) {
      elm.value = obj[i];
    }
  }
}

通过标准化的命名约定,我的意思是您的键名与其目标输入的键名匹配。因此,您在目标页面上有 id="amount1" 和另一个 id="amount2" 的输入。还要记住,如果您发送“金额”,我猜它们是数字的。如果是这样,您不需要将它们作为字符串发送,这意味着您可以避免 \" 转义。

web.loadUrl(
  "javascript:window.onload = function(){setValue({amount1:123, amount2:5});};"
);
于 2012-08-06T07:56:32.897 回答