javascript - 更改页面 div 中的文本

标签 javascript

我正在尝试制作类似文本旋转器的东西。 当我点击关于选项卡时,我只想显示关于信息,当我点击项目时,我想删除关于文本并将其替换为项目文本,并与我实际按下的其他文本相同。

我可以让它一个接一个地出现。但这不是我想要的。希望你们明白我想做什么。

不要给我写!请告诉我应该在哪里寻找它,我应该使用循环吗?

HTML:

<main>
            <div class="menuContainer">
                <ul>
                    <li class="about" id="about">
                        <h2>O mnie</h2>
                    </li>
                    <li class="projects" id="projects">
                        <h2>Projekty</h2>
                    </li>
                    <li class="empty">
                        <div class="circle"></div>
                    </li>

                    <li class="technology" id="technology">
                        <h2>Technologie</h2>
                    </li>
                    <li class="contact" id="contact">
                        <h2>Kontakt</h2>
                    </li>
                </ul>
            </div>


        <div class="poleDoZmiany">
            <p id="doZmiany" class="zmiana">
                Welcome Lorem ipsum dolor, sit amet consectetur adipisicing elit. Suscipit culpa labore temporibus fugiat eum error hic illo perspiciatis dignissimos, corporis, aut sapiente sint numquam!
            </p>
        </div>

            <p id="Tekst1">Lorem ipsum dolor sit amet consectetur adipisicing elit. Tenetur, natus nam! Excepturi ipsam voluptates magni odio adipisci, officia consequuntur praesentium eos cumque exercitationem soluta, eveniet dolor sed reiciendis asperiores modi pariatur placeat animi, debitis ratione. Hic illo incidunt, praesentium excepturi vero perspiciatis corrupti maxime accusamus, iusto repellendus quam id. </p>

            <p id="Tekst2">
                Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus sint modi quisquam autem perferendis maxime impedit sed. Doloremque, reprehenderit neque perspiciatis facere quia saepe architecto odio aspernatur, voluptas nobis blanditiis, quisquam beatae?
            </p>

            <p id="Tekst3">
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati, facilis. Deserunt, in.
            </p>

            <p id="Tekst4">
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure fugiat sequi accusantium inventore asperiores magnam impedit sit maiores praesentium! Ea exercitationem, veritatis placeat blanditiis vitae iste, cupiditate asperiores voluptate cumque quisquam ipsam repellat accusamus debitis omnis aliquid! Iste rerum consectetur impedit porro molestias numquam. Facere eveniet at dolorum deleniti! Facilis nisi ut beatae laudantium nulla culpa amet neque inventore at minus. Reiciendis distinctio ab voluptas! Earum excepturi corporis odit?
            </p>

CSS:

main {
    width: 80%;
    position: absolute;
    left: 10%;
    top: 35vh;
    background: white;
    -webkit-box-shadow: 0px 0px 34px 2px rgba(0,0,0,0.75);
    -moz-box-shadow: 0px 0px 34px 2px rgba(0,0,0,0.75);
    box-shadow: 0px 0px 34px 2px rgba(0,0,0,0.75);
}

main p {
    margin-top: 90px !important;
    margin: 25px;
    padding: 25px;
    text-align: center;
}

.media {
    text-align: center;
}

.media > img {
    padding: 10px;
}

p {
    display: none;
}

#doZmiany {
    display: block;
}

JavaScript:

let tekst1 = document.getElementById('Tekst1');
let tekst2 = document.getElementById('Tekst2');
let tekst3 = document.getElementById('Tekst3');
let tekst4 = document.getElementById('Tekst4');

var zmiana = document.getElementById('doZmiany');
const oMnie = document.getElementById('about');
const projekty = document.getElementById('projects');

oMnie.addEventListener('click', function(){
    tekst1.classList.add('zmiana');
})

projekty.addEventListener('click', function(){
    tekst2.classList.add('zmiana');

})

最佳答案

你快到了。请记住,您需要隐藏所有不想在每次点击时显示的段落。所以循环是个好主意。 然后显示唯一。

这是一个代码片段,它做的事情与您的方法略有不同,以防您遇到困难。继续你的解决方案!

document.getElementById('tablist').addEventListener('click', function(e){
    const tabs = ['tab1', 'tab2'];
    const ti = tabs.indexOf(e.target.id);
    if(ti !== false){
      for(let i = 0; i < tabs.length; i += 1) {
        if(ti !== i){
          document.getElementById(tabs[i]+'Txt').style.display = 'none';
        }
      }
      document.getElementById(tabs[ti]+'Txt').style.display = 'block';
    }
});
  .hiddenText {
    display: none;
  }
<ul id="tablist">
<li id="tab1">tab1</li>
<li id="tab2">tab2</li>
</ul>

<p id="tab1Txt" class="hiddenText">
This is tab1Txt.
</p>

<p id="tab2Txt" class="hiddenText">
This is tab2Txt.
</p>

关于javascript - 更改页面 div 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55186815/

相关文章:

javascript - 使用 Paypal Cordova 插件,无法使用生产或沙盒模式使其工作

javascript - 从按钮获取数据单击自动生成按钮 - jQuery 对话框

javascript - 按值对数据集数组排序[1]

javascript - 如何获取最近的div元素的高度

javascript - 在 AngularJS 中的 Controller 之间共享数据

javascript - 在 JavaScript 中重复一个字符串多次

javascript - 可以将返回新对象的函数视为 "pure"吗?

javascript - 当值为 0 时,更改复选框 - 输入仅接受数字

javascript - 在 Promise 上使用 apply() 且无法访问 Promise 响应数据

javascript - 如何在 Angular 中为 ngx-datatable-column 传递多个管道?