繁体   English   中英

当我调用 function 时,如何在 function 中传递参数并将该参数定义为变量?

[英]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")

  1. 将 title 和 buttonId 作为 arguments 传递。
  2. 检查标题是否存在,如果存在,则使用 id 获取按钮。
  3. 点击按钮。

此外,非常感谢使用描述性变量名称。 使代码更具可读性。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM