admin管理员组文章数量:1025512
Im trying to implement multilanguage support to a website and for that I need to select all elements that have class="lang"
attribute. This is how my Js code looks like
$(function(){
var language = localStorage.getItem('language');
if(language !== null){
//this does not work
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[language][$(this).attr('key')]);
});
}
//this works
$(document).on('click','.translate',function () {
var lang = $(this).attr('id');
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[lang][$(this).attr('key')]);
localStorage.setItem('language',lang);
});
});
});
And this is the html code where Im trying to test this out
<div class="navbar navbar-default navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">
<img alt="brand" src="../img/th-logo.png" height="25px" width="60px" href="Startsite.jsp">
</div>
</div>
<div class="navbar-brand">Studienlaufplan </div>
<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../Startsite.jsp" class="lang" key="tasks" >Aufgaben</a> </li>
<li><a href="../Account.jsp" class="lang" key="account" >Konto</a> </li>
<li><a href="Canal.jsp" class="lang" key="cannals">Kanäle</a> </li>
<li><a href="Settings.jsp" class="lang" key="settings">Einstellugen</a> </li>
<li class="dropdown">
<a href="#" class="lang dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" key="language">Sprache</a>
<ul class="dropdown-menu">
<li><a href="#" class="translate" id="de">Deutsch</a></li>
<li><a href="#" class="translate" id="en">English</a></li>
</ul>
</li>
<li><a href="/Controller/Logout" class="lang" key="logout">Abmelden</a></li>
</ul>
</div>
</div>
</div>
Im confused about jquery selectors and actually dont know how to use them well. Any help will be appreciated
Im trying to implement multilanguage support to a website and for that I need to select all elements that have class="lang"
attribute. This is how my Js code looks like
$(function(){
var language = localStorage.getItem('language');
if(language !== null){
//this does not work
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[language][$(this).attr('key')]);
});
}
//this works
$(document).on('click','.translate',function () {
var lang = $(this).attr('id');
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[lang][$(this).attr('key')]);
localStorage.setItem('language',lang);
});
});
});
And this is the html code where Im trying to test this out
<div class="navbar navbar-default navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">
<img alt="brand" src="../img/th-logo.png" height="25px" width="60px" href="Startsite.jsp">
</div>
</div>
<div class="navbar-brand">Studienlaufplan </div>
<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../Startsite.jsp" class="lang" key="tasks" >Aufgaben</a> </li>
<li><a href="../Account.jsp" class="lang" key="account" >Konto</a> </li>
<li><a href="Canal.jsp" class="lang" key="cannals">Kanäle</a> </li>
<li><a href="Settings.jsp" class="lang" key="settings">Einstellugen</a> </li>
<li class="dropdown">
<a href="#" class="lang dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" key="language">Sprache</a>
<ul class="dropdown-menu">
<li><a href="#" class="translate" id="de">Deutsch</a></li>
<li><a href="#" class="translate" id="en">English</a></li>
</ul>
</li>
<li><a href="/Controller/Logout" class="lang" key="logout">Abmelden</a></li>
</ul>
</div>
</div>
</div>
Im confused about jquery selectors and actually dont know how to use them well. Any help will be appreciated
Share Improve this question asked May 9, 2017 at 20:29 Sebastian Ampuero MorisakiSebastian Ampuero Morisaki 3373 silver badges13 bronze badges 7-
Don't make up your own attributes. Use
data-key
instead ofkey
. – Barmar Commented May 9, 2017 at 21:21 - I don't see any difference between the code that works and the code that doesn't work. The only difference is that one runs when the page is first loaded, the other runs when when you click on something. – Barmar Commented May 9, 2017 at 21:22
- I remend you move that similar code into a separate function, so you don't have to write it twice. – Barmar Commented May 9, 2017 at 21:23
- @Barmar I know its the same thats why I dont get why it isnt working – Sebastian Ampuero Morisaki Commented May 9, 2017 at 21:29
-
1
Are you loading the HTML dynamically? Maybe it's not loaded yet when the first code runs. Is language set in
localStorage
? – Barmar Commented May 9, 2017 at 21:31
2 Answers
Reset to default 3To get all elements with the specified class name, Try document.getElementsByClassName:-
var x = document.getElementsByClassName("className");
The getElementsByClassName()
method is not supported in Internet Explorer 8 and earlier versions.
function myFunction() {
var x = document.getElementsByClassName("example");
x[0].innerHTML = "Hello World!";
x[1].innerHTML = "my first code snippet"
}
<div class="example">First div element with class="example".</div>
<div class="example">Second div element with class="example".</div>
<button onclick="myFunction()">Try it</button>
try it yourself here.
This should do the trick:
$(".lang").each(function() {
const $lang = $(this);
// translate this item's text
});
Im trying to implement multilanguage support to a website and for that I need to select all elements that have class="lang"
attribute. This is how my Js code looks like
$(function(){
var language = localStorage.getItem('language');
if(language !== null){
//this does not work
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[language][$(this).attr('key')]);
});
}
//this works
$(document).on('click','.translate',function () {
var lang = $(this).attr('id');
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[lang][$(this).attr('key')]);
localStorage.setItem('language',lang);
});
});
});
And this is the html code where Im trying to test this out
<div class="navbar navbar-default navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">
<img alt="brand" src="../img/th-logo.png" height="25px" width="60px" href="Startsite.jsp">
</div>
</div>
<div class="navbar-brand">Studienlaufplan </div>
<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../Startsite.jsp" class="lang" key="tasks" >Aufgaben</a> </li>
<li><a href="../Account.jsp" class="lang" key="account" >Konto</a> </li>
<li><a href="Canal.jsp" class="lang" key="cannals">Kanäle</a> </li>
<li><a href="Settings.jsp" class="lang" key="settings">Einstellugen</a> </li>
<li class="dropdown">
<a href="#" class="lang dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" key="language">Sprache</a>
<ul class="dropdown-menu">
<li><a href="#" class="translate" id="de">Deutsch</a></li>
<li><a href="#" class="translate" id="en">English</a></li>
</ul>
</li>
<li><a href="/Controller/Logout" class="lang" key="logout">Abmelden</a></li>
</ul>
</div>
</div>
</div>
Im confused about jquery selectors and actually dont know how to use them well. Any help will be appreciated
Im trying to implement multilanguage support to a website and for that I need to select all elements that have class="lang"
attribute. This is how my Js code looks like
$(function(){
var language = localStorage.getItem('language');
if(language !== null){
//this does not work
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[language][$(this).attr('key')]);
});
}
//this works
$(document).on('click','.translate',function () {
var lang = $(this).attr('id');
$(document).find('.lang').each(function (index, element) {
if($(this).attr('placeholder')!=null){
//change placeholder text
}
$(this).text(arrLang[lang][$(this).attr('key')]);
localStorage.setItem('language',lang);
});
});
});
And this is the html code where Im trying to test this out
<div class="navbar navbar-default navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">
<img alt="brand" src="../img/th-logo.png" height="25px" width="60px" href="Startsite.jsp">
</div>
</div>
<div class="navbar-brand">Studienlaufplan </div>
<button class="navbar-toggle" data-toggle="collapse" data-target=".navHeaderCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse navHeaderCollapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../Startsite.jsp" class="lang" key="tasks" >Aufgaben</a> </li>
<li><a href="../Account.jsp" class="lang" key="account" >Konto</a> </li>
<li><a href="Canal.jsp" class="lang" key="cannals">Kanäle</a> </li>
<li><a href="Settings.jsp" class="lang" key="settings">Einstellugen</a> </li>
<li class="dropdown">
<a href="#" class="lang dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" key="language">Sprache</a>
<ul class="dropdown-menu">
<li><a href="#" class="translate" id="de">Deutsch</a></li>
<li><a href="#" class="translate" id="en">English</a></li>
</ul>
</li>
<li><a href="/Controller/Logout" class="lang" key="logout">Abmelden</a></li>
</ul>
</div>
</div>
</div>
Im confused about jquery selectors and actually dont know how to use them well. Any help will be appreciated
Share Improve this question asked May 9, 2017 at 20:29 Sebastian Ampuero MorisakiSebastian Ampuero Morisaki 3373 silver badges13 bronze badges 7-
Don't make up your own attributes. Use
data-key
instead ofkey
. – Barmar Commented May 9, 2017 at 21:21 - I don't see any difference between the code that works and the code that doesn't work. The only difference is that one runs when the page is first loaded, the other runs when when you click on something. – Barmar Commented May 9, 2017 at 21:22
- I remend you move that similar code into a separate function, so you don't have to write it twice. – Barmar Commented May 9, 2017 at 21:23
- @Barmar I know its the same thats why I dont get why it isnt working – Sebastian Ampuero Morisaki Commented May 9, 2017 at 21:29
-
1
Are you loading the HTML dynamically? Maybe it's not loaded yet when the first code runs. Is language set in
localStorage
? – Barmar Commented May 9, 2017 at 21:31
2 Answers
Reset to default 3To get all elements with the specified class name, Try document.getElementsByClassName:-
var x = document.getElementsByClassName("className");
The getElementsByClassName()
method is not supported in Internet Explorer 8 and earlier versions.
function myFunction() {
var x = document.getElementsByClassName("example");
x[0].innerHTML = "Hello World!";
x[1].innerHTML = "my first code snippet"
}
<div class="example">First div element with class="example".</div>
<div class="example">Second div element with class="example".</div>
<button onclick="myFunction()">Try it</button>
try it yourself here.
This should do the trick:
$(".lang").each(function() {
const $lang = $(this);
// translate this item's text
});
本文标签: javascriptHow to select all elements in the DOM with same classStack Overflow
版权声明:本文标题:javascript - How to select all elements in the DOM with same class? - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/questions/1745630622a2160142.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论