Javascript 将函数参数用作变量调用
标题中已经描述了什么,但基本上我想发送一个函数perime并使用它调用三个不同变量中的一个。另外,为了避免误解代码的“$('#'+id)”部分,我需要的只是“id=”部分的正确语法(如果可能的话)。我知道有一个解决办法,但我正在尝试最小化代码,这似乎是最理想的解决方案 我的代码:Javascript 将函数参数用作变量调用,javascript,jquery,Javascript,Jquery,标题中已经描述了什么,但基本上我想发送一个函数perime并使用它调用三个不同变量中的一个。另外,为了避免误解代码的“$('#'+id)”部分,我需要的只是“id=”部分的正确语法(如果可能的话)。我知道有一个解决办法,但我正在尝试最小化代码,这似乎是最理想的解决方案 我的代码: <div class="one"> <p>ime:</p> <input type="text" id="na
<div class="one">
<p>ime:</p>
<input type="text" id="name">
<p>kraj:</p>
<input type="text" id="city">
<p>starost:</p>
<input type="text" id="age">
<p id="one_output"></p>
</div>
如果要最小化代码,可以从以下操作开始:
id = $(`#${id}`).val();
与此相反:
id = $('#'+id+'').val();
将keyup回调修改为更清晰的代码:
$('.one input[type="text"]').keyup(function() {
var myId = $(this).attr("id"));
var id = $('#'+myId+'').val();
$("#one_output").text("Sem " + name + " in živim v " + city + ". Star
sem " +
age);
});
好吧,我想我终于明白你的意思了 因此,您要传递一个变量名,并希望动态调用它,而不是使用
this
,采用global
的方式,例如,我建议您将所有变量放在一个全局变量中
var formInputs = { name: '1', city: '2', age: '3' }
然后您可以使用formInputs[var\u name\u here]
所以你的例子,可以写成
var formInputs = { name: '1', city: '2', age: '3' }
function statement(name, val) {
formInputs[name] = val
var txt = `Sem ${formInputs.name} in živim v ${formInputs.city}. Star sem ${formInputs.age}`
$("#one_output").text(txt)
}
$('.one input[type="text"]').keyup(function() {
var elm = $(this)
statement(elm.attr("id"), elm.val())
})
var formInputs={name:'…',city:'…',age:'…}
var语句=函数(名称,val){
formInputs[name]=val//为变量赋值
var txt=`Sem${formInputs.name}inživim v${formInputs.city}.Star Sem${formInputs.age}`//新文本
$(“#一个输出”).html(txt)//输出
}
$('.one输入[type=“text”]').keyup(函数(){
var elm=$(this)//我们的关键元素
语句(elm.attr(“id”),elm.val()//传递id,为什么不传递值,这样我们就不再需要元素了
})
输入法:
克拉吉:
starost:
为了避免混淆,您的意思是“参数”,对吗#1在函数语句中,您根本没有使用id
。#2开关和id
可以简单地写为语句($(this).attr('id'))
,然后删除开关和id
行completely@balexandre我已经为你的第二点更新了代码,但是为你的第一点更新了代码。我在jquery调用中使用id($(“#”+id)),但我也想使用它调用javascrip代码第1-3行中定义的变量,我希望通过使html元素id与javascrip变量相同来实现这一点
var formInputs = { name: '1', city: '2', age: '3' }
function statement(name, val) {
formInputs[name] = val
var txt = `Sem ${formInputs.name} in živim v ${formInputs.city}. Star sem ${formInputs.age}`
$("#one_output").text(txt)
}
$('.one input[type="text"]').keyup(function() {
var elm = $(this)
statement(elm.attr("id"), elm.val())
})