【发布时间】:2019-05-15 22:42:05
【问题描述】:
我正在使用ACF repeater 创建具有“阅读更多/阅读更少”功能的用户配置文件,该功能可以显示和隐藏文本。我面临的问题是当我按下第三个配置文件的“阅读更多”按钮时,它会打开第一个配置文件。如何使此功能动态化,使其仅打开/关闭被点击的配置文件?
<div class="container" style="margin-top: 60px;">
<?php if(have_rows('profile')): ?>
<?php while(have_rows('profile')): the_row(); ?>
<div class="row">
<div class="col-md-3">
<div class="people-img" style="background-image: url('<?php echo the_sub_field("profile_img"); ?>')"></div>
</div>
<div class="col-md-9">
<h4 class="profile-name">
<?php the_sub_field('name'); ?>
</h4>
<p class="profile-job-title semi-bold">
<?php the_sub_field('info'); ?>
</p>
<p><?php the_sub_field('profile_blurb'); ?><span id="dots">...</span><span id="more"><?php the_sub_field('profile_read_all'); ?></span></p>
<div class="about-readmore" onclick="myFunction()" id="myBtn">Read more</div>
<div class="readmore-border"></div>
</div>
</div><!-- end row -->
<div class="profile-border"></div>
<?php
endwhile;
else:
endif;
?>
<script>
function myFunction() {
var dots = document.getElementById("dots");
var moreText = document.getElementById("more");
var btnText = document.getElementById("myBtn");
if (dots.style.display === "none") {
dots.style.display = "inline";
btnText.innerHTML = "Read more";
moreText.style.display = "none";
} else {
dots.style.display = "none";
btnText.innerHTML = "Read less";
moreText.style.display = "inline";
}
}
</script>
#more {display: none;}
【问题讨论】:
-
HTML ID 必须是唯一的。
document.getElementById("more")应始终返回 DOM 中可用的第一个#more元素。
标签: javascript html advanced-custom-fields