0

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

假设我有两个不同的变量,MyX=100 和 MyY=150。我想在函数输入的帮助下将 10 添加到其中之一。

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

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

function Test(MyZ)

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

谢谢你的帮助!

4

4 回答 4

0

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

<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;
}
于 2013-10-23T21:06:51.443 回答
0

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

在您的示例中:

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

这里发生的情况是,当单击这些按钮时,会使用当前包含Test的任何值调用该函数。在这种情况下,如果没有任何附加代码,它们都将为空。MyXMyY

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

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

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

这里会发生的是 Test 中的代码将被调用,其MyZ值是MyXMyY取决于单击的按钮。

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

我希望这可以澄清事情。

于 2013-10-23T21:01:02.723 回答
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>

无论如何,这是一种更好的方法,因为它(稍微)减少了您正在进行的所有全局状态。如果将 JS 保留在 HTML 之外,将变量和函数放在单个命名空间中等,那么 JS 更容易推理。

于 2013-10-23T21:04:15.853 回答
0

我不是 100% 确定我理解你的问题,但我会采取行动。听起来您想使用一个函数来增加一个数字(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
}

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

于 2013-10-23T21:04:50.900 回答