我想知道如何通过函数输入更改不同的变量。
假设我有两个不同的变量,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语句?
感谢您的帮助!
答案 0 :(得分:0)
我认为你误解了参数/方法调用的概念。
在你的例子中:
<button onclick="Test(MyX)"><p>Test</p></button>
<button onclick="Test(MyY)"><p>Test</p></button>
这里发生的事情是,当点击这些按钮时,将使用当前包含的Test
和MyX
值调用函数MyY
。在这种情况下,如果没有任何其他代码,它们都将为空。
您的较低功能,在.js
文件中定义:
function Test(MyZ)
{
//..
//..
//..
}
这是一个功能(方法)。当您调用此方法时,它会根据作为参数传入的内容执行代码。
这里会发生的是,我们会调用Test中的代码,MyZ
的值为MyX
或MyY
,具体取决于点击的按钮。
这样做的范围可以防止您修改最初在按钮单击中定义的变量。你在这里可以做的是一个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;
}