Javascript 如何更改函数的输入和输出?

Javascript 如何更改函数的输入和输出?,javascript,Javascript,我正在尝试使用HTML和JavaScript创建一个锁。我想知道如何更改另一个函数的输入和输出。假设我有一个函数 函数a(){document.getElementById(“x”).id=“b”}。 我想通过使用另一个函数来更改元素x和要更改的id“b” 我曾尝试将该函数放入另一个函数中,但没有成功 function a() {document.getElementById("x").id="b";} function c() {document.getElementById("a()").

我正在尝试使用HTML和JavaScript创建一个锁。我想知道如何更改另一个函数的输入和输出。假设我有一个函数

函数a(){document.getElementById(“x”).id=“b”}。

我想通过使用另一个函数来更改元素x和要更改的id“b”

我曾尝试将该函数放入另一个函数中,但没有成功

function a() {document.getElementById("x").id="b";}

function c() {document.getElementById("a()").document.getElementById="b";}
您的“other”函数应该使用


除了我的评论之外,您还应该使用参数-至少在函数a中。这样,函数c可以覆盖函数a设置的值

但是,如果在没有参数的情况下调用a,它将始终将newId值设置为“b”


您正在使代码变得复杂。简单地说,解决这个问题的一种方法是使用函数中的参数

函数a(x,b){
document.getElementById(x).id=b;
}
a(“abc”、“abcd”)

修改现有代码有两种方法

  • 您可以使用AST解析器并修改AST树。这是更好的方法,但它是特定于浏览器的
  • 可以获取函数的文本以执行基于字符串的操作。这是一种不太可靠的黑客方式,但它适用于所有浏览器
  • 下面的示例演示如何执行后面的操作。该示例将修改id为“x”的元素的函数
    a
    ,转换为具有相同名称的函数,该函数修改id为“y”的元素

    //旧函数。。。
    函数a(){document.getElementById(“x”).innerHTML=“b”}
    // ... 修改x元素的属性。
    a();
    //将函数转换为字符串,将“x”替换为“y”
    //并计算结果。
    eval(a.toString().replace(/“x”/,“y”);
    //新函数修改y元素。
    a()
    
    x
    
    y
    您在此处尝试的方法无效。首先,
    “a()”
    是一个文本文本-您将在此处查找具有文本id的元素
    a()
    。即使您删除了引号以使其成为实际的函数调用,
    a
    仍然不会返回任何内容。您需要用代码覆盖该函数:您的两个函数都不使用参数,并且在内部您尝试使用DOM选择器访问函数。我建议您首先从HTML和JavaScript入门指南开始,了解您正在做什么。调用函数时,可以通过更改传递参数的值来更改函数的“输入”。可以通过更改函数中的返回值(即
    return
    语句返回的值)来更改函数的“输出”。请参阅本文末尾的“了解更多”链接,并进行后续操作。
    function changeId(old, new) {
    
       document.getElementById(old).id =  new;
    
    }
    
    function my_caller() {
    
       changeId('x', 'b');      
    
       changeId('thisId', 'thatId');
    
    
    }
    
    function a(newId) {
        if(newId!== undefined ||newId!== null) {
            document.getElementById("x").id=newId;
        }
        document.getElementById("x").id="b";
    }
    
    function c(){
        a("notB");
    }