简单函数只工作一次(显示/隐藏divs)-普通JavaScript
我在一个多语言网站上工作 我希望能够按下一个按钮,all的显示(包装内容)div变为简单函数只工作一次(显示/隐藏divs)-普通JavaScript,javascript,html,Javascript,Html,我在一个多语言网站上工作 我希望能够按下一个按钮,all的显示(包装内容)div变为none,只有正确的one变为inline block 它起作用了。但只有一次。有什么问题?请不要用JQuery 编辑在html中添加了一些代码,使其“易懂” JS(所有函数toSl、toAn等都是相同的) 示例:这是一个经过编辑的示例,我假设您正在尝试执行此操作。如果要使用示例运行,必须在按钮上使用class,而不是id,并单击侦听器以查看所有图像,而不仅仅是第一组图像 无论哪种方法,您都可以在一个函数中解决所
none
,只有正确的one变为inline block
它起作用了。但只有一次。有什么问题?请不要用JQuery
编辑在html中添加了一些代码,使其“易懂”
JS(所有函数toSl、toAn等都是相同的)
示例:这是一个经过编辑的示例,我假设您正在尝试执行此操作。如果要使用示例运行,必须在按钮上使用
class
,而不是id
,并单击侦听器以查看所有图像,而不仅仅是第一组图像
无论哪种方法,您都可以在一个函数中解决所有问题。每种语言都不需要函数
注释和解释在代码中
//函数toRu(){
函数toAny(){
var lngs=document.queryselectoral(“.lng”);
对于(var i=0;i
Sl语言中的页面内容
以英语显示的页面内容
以Ger语言显示的页面内容
使用相同的主体和不同的名称重复函数是没有意义的。请改用class
属性,并按类附加单击处理程序。若要仅影响特定目标,请将其作为参数传递给单击处理程序。请参阅示例。请提供一个可运行的示例。其中一半以上未定义(函数,类)。而不是document.getElementById(“ru”)
使用这个
或者一个参数,你可以用一个函数来完成所有的事情,因为这是唯一的可变部分。我不知道如何使它可以运行,对不起。在html中添加了一些内容,这样它才有意义。@DrDoom你可以使用类似的东西来创建一个你正在尝试构建的示例。类似这样的东西:谢谢。我将使用它。此导航实际上有标志。在真实网站上,有指向不同语言子页面的重定向按钮。您的方法的主要问题是重复使用相同的id
,就像在评论中发布的一样。但是,我不知道您的“真实网站”:-)加入讨论=)有一个指向“真实网站”的链接这里。是的,确实出现了多个ID…=/我看到了。很好,看起来Peter做了与我上面所做的相同的更改。所以我把他留给它:-)
function toRu () {
var lngs, i;
lngs = document.querySelectorAll(".lng");
for (var i=0;i<lngs.length;i++){
lngs[i].style.display="none";
}
document.getElementById("ru").style.display="inline-block";
}
document.getElementById("slo").addEventListener("click", toSl);
document.getElementById("ang").addEventListener("click", toAn);
document.getElementById("nem").addEventListener("click", toNe);
document.getElementById("ita").addEventListener("click", toIt);
document.getElementById("hrv").addEventListener("click", toHr);
document.getElementById("rus").addEventListener("click", toRu);
<!DOCTYPE html>
<html>
<body>
<div class="lng" id="sl">
<nav>
<div id="lngSpace">
Language Selector
<input type="button" id="slo" class="zastave" value="Slo">
<input type="button" id="ang" class="zastave" value="Eng">
<input type="button" id="nem" class="zastave" value="Deu">
<input type="button" id="ita" class="zastave" value="Ita">
<input type="button" id="hrv" class="zastave" value="Hrv">
<input type="button" id="rus" class="zastave" value="Rus">
</div>
</nav>
Content of the page in Sl language
</div>
<div class="lng" id="en">
<nav>
<div id="lngSpace">
Language Selector
<input type="button" id="slo" class="zastave" value="Slo">
<input type="button" id="ang" class="zastave" value="Eng">
<input type="button" id="nem" class="zastave" value="Deu">
<input type="button" id="ita" class="zastave" value="Ita">
<input type="button" id="hrv" class="zastave" value="Hrv">
<input type="button" id="rus" class="zastave" value="Rus">
</div>
</nav>
Content of the page in En language
</div>
<div class="lng" id="de">
<nav>
<div id="lngSpace">
Language Selector
<input type="button" id="slo" class="zastave" value="Slo">
<input type="button" id="ang" class="zastave" value="Eng">
<input type="button" id="nem" class="zastave" value="Deu">
<input type="button" id="ita" class="zastave" value="Ita">
<input type="button" id="hrv" class="zastave" value="Hrv">
<input type="button" id="rus" class="zastave" value="Rus">
</div>
</nav>
Content of the page in Ger language
</div>
etc etc
</body>
</html>
var language = navigator.language || navigator.languages[0];
console.log(language);
var languageFistTwo = language.substr(0,2); // To only keep the first 2 characters.
console.log(languageFistTwo);
switch (languageFistTwo) {
case "sl":
document.getElementById("sl").style.display="inline-block";
break;
case "en":
document.getElementById("en").style.display="inline-block";
break;
case "de":
document.getElementById("de").style.display="inline-block";
break;
case "it":
document.getElementById("it").style.display="inline-block";
break;
case "hr":
document.getElementById("hr").style.display="inline-block";
break;
case "ru":
document.getElementById("ru").style.display="inline-block";
break;
default:
document.getElementById("en").style.display="inline-block";
break;
}