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

Javascript 通过函数输入更改不同的变量,javascript,Javascript,我想知道如何通过函数输入改变不同的变量 假设我有两个不同的变量,MyX=100和MyY=150。我想在函数输入的帮助下,在其中一个函数中添加10个 <button onclick="Test(MyX)"><p>Test</p></button> <button onclick="Test(MyY)"><p>Test</p></button> function Test(MyZ) 如何输出原始变量而

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

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

<button onclick="Test(MyX)"><p>Test</p></button>
<button onclick="Test(MyY)"><p>Test</p></button>
function Test(MyZ)
如何输出原始变量而不必为每个可能的输入变量生成if语句


谢谢你的帮助

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

在您的示例中:

<button onclick="Test(MyX)"><p>Test</p></button>
<button onclick="Test(MyY)"><p>Test</p></button>
这是一个函数(方法)。当您调用此方法时,它将根据作为参数传入的内容执行代码

这里将发生的情况是,调用测试中的代码时,
MyZ
的值为
MyX
MyY
,具体取决于单击的按钮

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


我希望这能澄清问题。

从您的澄清评论中:

我希望函数(MyZ)中由MyX/MyY临时声明的变量在函数中使用。所以:
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>

var my_值={
x:100,
y:150
};
功能测试(键){
my_值[key]+=10;
}
测试
测试

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

我不能100%肯定我理解你的问题,但我想尝试一下。听起来好像您想使用一个函数来增加一个数字(X/Y/Z),然后返回原始值。(这有点违背了计算的目的,但是…)


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

不使用变量作为函数参数,而是使用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;
}

试验

试验

功能测试(x){ document.getElementById(x).value=parseInt(document.getElementById(x).value)+10; }
MyX
从未在此处设置。您希望它做什么?MyX和MyZ是在预运行脚本中定义的。它们以表格形式呈现。我想通过改变输入=,用一个函数来改变两者。)我仍然不知所措,我想你必须在你的问题中添加更多的代码。你的意思是:
MyX=MyX+10?我想我不明白你的问题。你能给出你想要发生的事情的更具体的例子吗?听起来你混淆了一些术语,但我不确定是哪一个:)这似乎是一个很棒的解决方案,但当我试图提醒(键)它给了我MyStone,而不是它的价值<代码>var my_values={MyWood:100,MyStone:150}函数测试(key){alert(key)my_values[key]+=10;}测试

正确<代码>键
是键。:)
my_values[key]
是该值。我不知道为什么enter在注释中不起作用,对此表示抱歉!谢谢谢谢谢谢谢谢!
function Test(param){
   var originalVal = param;
   var newVal = param + 10;
   return originalVal; //it would make more sense if you return the newVal here
}
<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;
}