首页 > 解决方案 > 如何使使用 php 生成的按钮起作用?

问题描述

Btn1 适当地触发 getId 函数,但其​​他两个 btns 没有,我怎样才能使它们正常工作?我认为下面的代码显示了我想要实现的目标,所以请忽略本段的其余部分。这是在这里,因为在我添加更多详细信息之前,该页面不允许我发布问题。

<?php 
    $id ="22";
    $name = "Joseph";
    $btn1 = "<button onclick='getId($id)'>$name $id</button>";
    $btn2 = "<button onclick='getId($id,$name)'>$name $id</button>";    
    $btn3 = "<button onclick='getId($name)'>$name $id</button>";

    echo $btn1;
    echo "<br>";
    echo $btn2; 
    echo "<br>";
    echo $btn3; 
?>

<!DOCTYPE html>
<html>
<script>
    function getId(x, y) {  
        alert(x);
        alert(y)
        console.log(x);
        console.log(y);
    }
</script>
<body>
    "ReferenceError: Joseph is not defined"
</body>
</html>

标签: javascriptphpdynamic

解决方案


关于将字符串作为参数传递给函数(如上),字符串值需要被引用,否则会出错。在这种情况下,您可以做的不是硬编码参数,而是使用arguments函数固有的对象并动态访问参数。

<!DOCTYPE html>
<html>
    <head>
        <title>function arguments and quotes....</title>
    </head>
    <script>
        function getId() {  
            for( let i=0; i < arguments.length;i++ ){
                alert(arguments[i]);
                console.info(arguments[i]);
            }
        }
    </script>
    <body>
        <?php 

            $id ="22";
            $name = "Joseph";
            $btn1 = "<button onclick='getId($id)'>$name $id</button>";
            $btn2 = "<button onclick='getId($id,\"$name\")'>$name $id</button>";    
            $btn3 = "<button onclick='getId(\"$name\")'>$name $id</button>";

            echo $btn1;
            echo "<br>";
            echo $btn2; 
            echo "<br>";
            echo $btn3; 
        ?>  
    </body>
</html>

function getId() {  
  for( let i=0; i < arguments.length;i++ ){
    alert(arguments[i]);
    console.info(arguments[i]);
  }
}
<button onclick='getId(22)'>Joseph 22</button><br>
<button onclick='getId(22,"Joseph")'>Joseph 22</button><br>
<button onclick='getId("Joseph")'>Joseph 22</button>


推荐阅读