通过函数输入更改不同的变量

时间:2013-10-23 20:49:19

标签: javascript

我想知道如何通过函数输入更改不同的变量。

假设我有两个不同的变量,MyX = 100,MyY = 150。我希望借助函数的输入将其中的一个添加到其中一个。

<button onclick="Test(MyX)"><p>Test</p></button>
<button onclick="Test(MyY)"><p>Test</p></button>

在javascript中我创建了第三个变量,然后我在函数内部的计算中使用它。

function Test(MyZ)

如何输出原始变量而不必为每个可能的输入变量创建if语句?

感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

我认为你误解了参数/方法调用的概念。

在你的例子中:

<button onclick="Test(MyX)"><p>Test</p></button>
<button onclick="Test(MyY)"><p>Test</p></button>

这里发生的事情是,当点击这些按钮时,将使用当前包含的TestMyX值调用函数MyY。在这种情况下,如果没有任何其他代码,它们都将为空。

您的较低功能,在.js文件中定义:

function Test(MyZ)
{
//..
//..
//..
}

这是一个功能(方法)。当您调用此方法时,它会根据作为参数传入的内容执行代码。

这里会发生的是,我们会调用Test中的代码,MyZ的值为MyXMyY,具体取决于点击的按钮。

这样做的范围可以防止您修改最初在按钮单击中定义的变量。你在这里可以做的是一个void函数,这意味着它只是副作用。您可以更改类/全局变量,但不能更改标记中定义的变量。

我希望这能澄清事情。

答案 1 :(得分:0)

来自您的澄清评论:

  

我希望MyX / MyY临时声明的函数(MyZ)中的变量在函数中使用。所以:<button onclick="Test(MyX)"><p>Test</p></button> function Test(MyZ) { MyZ=MyZ+10; }将MyX的值增加10。

你不能用JavaScript做到这一点。函数接收传递给它的值,而不是对碰巧包含它的变量的任何类型的引用。

可以做的是添加一个间接层。将所有这些变量放在一个对象中并改为传递键名:

<script>
    var my_values = {
        x: 100,
        y: 150
    };

    function test(key) {
        my_values[key] += 10;
    }
</script>

<button onclick="test('x');">test</button>
<button onclick="test('y');">test</button>

无论如何,这是一种更好的方法,因为它(略微)会减少你正在进行的所有全局状态。如果你把它从HTML中删除,把你的变量和函数放在一个命名空间中等等,那么JS就更容易推理了。

答案 2 :(得分:0)

我不是百分百肯定我明白你的问题,但我会采取刺。听起来您想使用函数递增数字(X / Y / Z)然后返回原始值。 (它有点打败了计算的目的但是......)

function Test(param){
   var originalVal = param;
   var newVal = param + 10;
   return originalVal; //it would make more sense if you return the newVal here
}

该函数接受一个参数或传入的任何变量并进行计算。

答案 3 :(得分:0)

不使用变量作为函数参数,而是使用elementID作为参数

<input type="text" id="myx" />
<input type="text" id="myy" />

<button onclick="Test('myx')"><p>Test</p></button>
<button onclick="Test('myy')"><p>Test</p></button>

function Test(x){
document.getElementById(x).value=parseInt(document.getElementById(x).value)+10;
}