我一直在这里找,但找不到答案。
我有一个用于字段(或行)的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; ?>
我希望你知道的比我多,能帮助我
在每次循环运行时都要覆盖变量。
尝试用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)