为了账号安全,请及时绑定邮箱和手机立即绑定

自从我开始学习 DOM 以来已经 2 周了。试图制作语言切换器。不工作

自从我开始学习 DOM 以来已经 2 周了。试图制作语言切换器。不工作

白衣非少年 2022-12-29 13:58:47
我目前在 html 中有两个按钮:<div>  <button class="choose-lang" id="eng-btn">English</button></div><div>  <button class="choose-lang" id="rus-btn">Русский</button></div>当我点击 eng-btn 的按钮时,它应该将“eng”的类切换到 display =“inline”并将“rus”的类切换到 display =“none”;// My html<h2 class="form-heading"><span class="eng">Enter your v-number:</span><span class="rus">Введите ваш номер:</span></h2>我将我的 CSS 文件保持为空,我的意思是我没有为 css 文件中的 eng 和 rus 类提供任何属性。我在js文件中写了以下内容:var engBtn = document.getElementById("eng-btn");engBtn.addEventListener("click", function() {    document.getElementsByClassName("eng").style.display = "inline";    document.getElementsByClassName("rus").style.display = "none";})var rusBtn = document.getElementById("rus-btn");rusBtn.addEventListener("click", function() {    document.getElementsByClassName("rus").style.display = "inline";    document.getElementsByClassName("eng").style.display = "none";})不知道为什么它不起作用
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

getElementsByClassName返回一个集合而不是单个元素,因此 id 没有 DOM 元素的属性和方法。


你可以尝试像这样迭代:


var engBtn = document.getElementById("eng-btn");

engBtn.addEventListener("click", function() {

    // document.getElementsByClassName("eng").style.display = "inline";

    // document.getElementsByClassName("rus").style.display = "none";


    changeVisibility('rus', 'none');

    changeVisibility('eng', 'inline');

})


var rusBtn = document.getElementById("rus-btn");


rusBtn.addEventListener("click", function() {

    

    changeVisibility('rus', 'inline');

    changeVisibility('eng', 'none');

    // document.getElementsByClassName("rus").style.display = "inline";

    // document.getElementsByClassName("eng").style.display = "none";

}); 



function changeVisibility(className, visibility) {

  const collection = document.getElementsByClassName(className);

  for(let i = 0 ; i < collection.length; i++) {

    collection[i].style.display = visibility;

  }

}


查看完整回答
反对 回复 2022-12-29
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

getElementsByClassName返回一个集合而不是单个元素,因此 id 没有 DOM 元素的属性和方法。


你可以尝试像这样迭代:


var engBtn = document.getElementById("eng-btn");

engBtn.addEventListener("click", function() {

    // document.getElementsByClassName("eng").style.display = "inline";

    // document.getElementsByClassName("rus").style.display = "none";


    changeVisibility('rus', 'none');

    changeVisibility('eng', 'inline');

})


var rusBtn = document.getElementById("rus-btn");


rusBtn.addEventListener("click", function() {

    

    changeVisibility('rus', 'inline');

    changeVisibility('eng', 'none');

    // document.getElementsByClassName("rus").style.display = "inline";

    // document.getElementsByClassName("eng").style.display = "none";

}); 



function changeVisibility(className, visibility) {

  const collection = document.getElementsByClassName(className);

  for(let i = 0 ; i < collection.length; i++) {

    collection[i].style.display = visibility;

  }

}


查看完整回答
反对 回复 2022-12-29
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号