javascript - 如何使用 getElementByClassName 使文本出现并重新出现在 Javascript 中?
问题描述
当您单击文本时,我正在尝试使某个文本出现。但是 getElementByClassName 由于某种原因无法正常工作。我不知道为什么?当然,这是我没有看到的一个小细节。目标是当您单击阅读更多时,文本会出现并且阅读更少它会再次消失。它的 3 个项目具有相同的文本
<ul class="item-list">
<!-- Item 1 Start-->
<li class="item item1">
<img src="images/chromebookpro.jpg">
<div class="item-text">
<h2>Google Pixelbook</h2>
<p class="pricing">Starting at $999</p>
<p>The first high performance Chromebook with Google Assistent built in. Features a four-in-one design offering laptop, tablet, tent, and entertainment modes, an all day battery with fast charging, a sleek aluminum body, and an optional pen. </p>
<p class="item-specs"> Key Specs</p>
<a href="#" onClick="change()" class="read-more">Read More</a>
<span style="display:none" class="read-less"> More Specs.<a href="" onClick="change()" >Read Less</a></span>
<div class="item-text-specs">
<div class="item-list">
<div class="article">12.3" Quad HD LCD</div>
<div class="article">Intel processor®</div>
</div>
<div class="item-list">
<div class="article">128/256/512 GB</div>
<div class="article">8/16 GB memory</div>
</div>
</div>
</div>
</li>
<!-- Item 1 End-->
</ul>
</div>
<script type="text/javascript">
var readMore = document.getElementByClassName("read-more");
var readLess = document.getElementByClassName('read-less');
function change() {
if (readLess.style.display == 'none') {
readMore.style.display = 'none';
readLess.style.display = 'block';
} else {
readMore.style.display = 'none';
}
}
</script>
解决方案
你有一个错字。
该函数称为getElementsByClassName
,请注意 S。它返回具有该类的元素的数组。
您可能会感到困惑,因为函数 getElementById 不是复数形式,因为 ID 都应该是唯一的,而类可以用于多个元素。
// Changed from getElement to getElements
// function will return an array, get the first element of that array
var readMore = document.getElementsByClassName("read-more")[0];
var readLess = document.getElementsByClassName('read-less')[0];
我强烈建议将来查看控制台以解决此类错误
推荐阅读
- java - 将字符串从活动传递到片段
- arrays - 在 Rust 中,我可以在不硬编码值的情况下实例化我的 const 数组吗?编译时评估?
- quantlib - 使用哪种利率来计算 IV:FlatForward 没有意义?
- javascript - 尝试使用 forEach 函数控制台记录一个简单对象时,我变得不确定
- javascript - 固定底部 div 栏(立即呼叫按钮)闪烁 CSS 位置:已修复
- java - Lambda 表达式 Arrays.sort
- node.js - react node js socket io emit没有到达前面
- javascript - Laravel 5:使用 Vue js 通过 onChange 事件获取我的选择选项的默认值
- vb.net - 如何从 MDI 父标题栏中删除最大化的 MDI 子名称?
- python - (基础):conda,(env1):CPython,(env2):一些python-distro。可能的?