[英]How can I pass an argument in a function and define that argument as a variable when I call the function?
我有一个网站,人们可以在那里进行研讨会。
如果有人创建了一个研讨会并想要编辑内容,他们点击一个按钮。
如果单击该按钮,JS 将检查数据库中是否有该用户和研讨会的数据。 如果是这种情况,将打开研讨会编辑器页面。
取决于该研讨会的数据库中有多少数据,需要显示某些 div(显示:块;)。
在 JS 中有一个 if 语句。 所以:
if(stepOneTitle != "")
当 if 语句为真时,单击按钮 (button.click()) 并显示 div 并填充数据库中的数据,以便用户编辑数据。
所以一种情况的代码是:
if(stepOneTitle != ""){
const buttonStepOne = document.getElementById("button-step-one")
buttonStepOne.click()
}
我不想为所有 eitgh div 复制并粘贴此代码,所以我尝试将其变成 function ,我可以调用所有八个 div:
function loadSteps(a,b,c){
if(a != ""){
b = document.getElementById(c)
c.click()
};
};
loadSteps(stepOneTitle, const buttonStepOne, "button-step-one" )
loadSteps(stepTwoTitle, const buttonStepTwo, "button-step-two" )
ETC..
问题是我不能用“cont buttonStepOne”调用 function,因为我收到一个语法错误,说“const”是一个意外的标记。
我努力了:
function loadSteps(a,b,c){
if(a != ""){
const b = document.getElementById(c)
c.click()
};
};
loadSteps(stepOneTitle, buttonStepOne, "button-step-one" )
控制台给我一个错误,说 const b 已经声明,所以我假设当我调用 function 时,b 被绑定到 const 而不是 buttonStepOne。
我在 Reddit 上问过,但我得到了解决方法,但没有直接的解决方案。
他们是这个问题的直接解决方案吗?
您不会将变量传递给函数,而只是传递值。 调用者无需指定变量名,您可以使用 function 中的局部变量。
function loadSteps(title, buttonId) { if (title.= "") { let button = document.getElementById(buttonId) if (button) { button;click(); } }; }, loadSteps(stepOneTitle, "button-step-one") loadSteps(stepTwoTitle, "button-step-two")
此外,非常感谢使用描述性变量名称。 使代码更具可读性。
function loadSteps(title, buttonId){
if(title != "") {
const button = document.getElementById(buttonId);
button.click();
};
};
loadSteps(stepOneTitle, "button-step-one");
const
开始一个变量声明。 变量声明是语句,因此它们不能成为调用表达式的 arguments 列表的一部分。
不清楚为什么在第二种情况下会出现该错误。 虽然b
是一个参数,但这并不妨碍您声明另一个具有相同名称的变量(尤其是在不同的范围内)。
无论哪种方式,您都不需要第二个参数。 它没有任何目的。 您不能以这种方式声明“动态”变量,无论如何也没有理由这样做。 变量的名称是什么并不重要。
做就是了:
function loadSteps(title, id){
if(title != ""){
const element = document.getElementById(id);
if (!element) {
console.error(`No such element: ${id}`);
return;
}
element.click();
}
}
loadSteps(stepOneTitle, "button-step-one" )
loadSteps(stepTwoTitle, "button-step-two" )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.