提问者:小点点

我可以用变量来命名javascript中的函数吗?


我一直在这里找,但找不到答案。

我有一个用于字段(或行)的while循环。 当有人添加一个新的,一个名字,一个链接和信息被添加。

我在html中的名称上有一个onmouseover事件,它调用一个函数(这里有info var)。 但是当我有多个字段时,函数只接受最新的字段信息。 我想为每个字段一个新的函数,我不知道任何其他选择,除了给函数一个变量,例如名称变量。

这就是我现在所拥有的:

                <?php while(have_rows('locatie')): the_row();


                            $name = get_sub_field('name');
                            $link = get_sub_field('link');
                            $info = get_sub_field('info');
                            
                    ?>

                    <script>
                        var regio = <?php echo json_encode($name); ?> 
                        var info = <?php echo json_encode($info); ?> 
                    </script>

                    <a onmouseover="regio(info)"
                    <?php if($link): ?>
                        href="<?php echo $link; ?>"
                    <?php else: ?>
                        href='./404page'
                    <?php endif; ?>
                    ><?php echo $name; ?></a>

                    <script>
                        function regio(info) {
                            document.getElementById("infoabout").innerHTML = info;
                        }
                    </script>


                </script>
                    <?php endwhile; ?>

我希望你知道的比我多,能帮助我


共1个答案

匿名用户

在每次循环运行时都要覆盖变量。

尝试用JSON_ENCODE函数替换函数调用变量

结果应该是这样的

<?php while(have_rows('locatie')): the_row();

    $name = get_sub_field('name');
    $link = get_sub_field('link');
    $info = get_sub_field('info');

?>
    <a onmouseover="<?php echo json_encode($name); ?>(<?php echo json_encode($info); ?> )"
        <?php if($link): ?>
            href="<?php echo $link; ?>"
        <?php else: ?>
            href='./404page'
        <?php endif; ?>
    ><?php echo $name; ?></a>

    <script>
        function regio(info) {
            document.getElementById("infoabout").innerHTML = info;
        }
    </script>

    </script>
<?php endwhile; ?>

更好的解决方案是在任何作用域中每次创建一个新变量。

<script>
  window.rows = window.rows || {};
  window.rows[<?php echo $name; ?>] = {
    regio: <?php echo json_encode($name); ?>,
    info: <?php echo json_encode($info); ?>,
  }
</script>

然后是悬停事件

window.rows[<?php echo $name; ?>].regio(window.rows[<?php echo $name; ?>].info)