javascript - vanilla javascript 中的 Each() 问题

标签 javascript each

每次我尝试在普通 JavaScript 中重现 .each() jQuery 函数时,我都会遇到麻烦。

当我尝试改变这一点时:

$("[data-lng]").each(function(){
   var lng = $(this).data('lng');
   $('#language').text(lng)
});

对此:

var elem = document.querySelectorAll("[data-lng]");
Array.prototype.forEach.call(elem, function(){
    document.getElementById('language').write = elem.dataset.lng
});

控制台返回elem.dataset未定义

另外,我正在处理data内容,所以我什至不确定编写这个document.querySelectorAll("[data-lng]")是否合法>

感谢您的帮助!

PS: 这是我想要转换为普通 JS 的示例: https://jsfiddle.net/x93oLad8/4/

最佳答案

将 jsFiddle 示例替换为普通 JS 相当简单。需要注意的一个“问题”是 IE 不支持 NodeList.prototype.forEach(),因此使用常规的 for 循环。 (参见:https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach)

var dictionary = {
  'greet': {
    'it': 'Ciao',
    'en': 'Hello',
    'fr': 'Salut',
  }
};
var langs = ['it', 'en', 'fr'];
var current_lang_index = 0;
var current_lang = langs[current_lang_index];

window.change_lang = function() {
  current_lang_index = ++current_lang_index % 3;
  current_lang = langs[current_lang_index];
  translate();
}

function translate() {
  /* jQuery:
      $("[data-translate]").each(function(){
      var key = $(this).data('translate');
      $(this).html(dictionary[key][current_lang] || "N/A");
  });*/
  
  /* vanilla */
  var dt = document.querySelectorAll("[data-translate]");
  //iterate over the NodeList:
  for (i = 0; i < dt.length; ++i) {
    var key = dt[i].getAttribute('data-translate');//get the key
    dt[i].innerHTML = (dictionary[key][current_lang] || "N/A");//set the text
  }
  
}

translate();
<div data-translate="greet"></div>
<button onclick="change_lang()">Change Language</button>

关于javascript - vanilla javascript 中的 Each() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47732681/

相关文章:

javascript - 在自定义数据结构上查找 JavaScript 中两个节点之间的路径

javascript - 使用 JavaScript 将光标置于 iframe 正文元素中的文本末尾

arrays - 如何使用带有 .each 的 groovy jsonbuilder 创建数组?

javascript - jQuery 每个函数用于多个轮播下一个、上一个标识符问题

jquery - 如何用每个 ?//strip url 替换元素的 attr href

javascript - 如何使用单个按钮显示/隐藏一定数量的 div?

javascript - date.toLocaleString 有错误吗?

javascript - 如何使用 .js 将 .swf 调整为全屏

jQuery 每个循环不适用于 json 数据

javascript - 在 Play 框架模板中使用 Scala List 填充 Javascript 数组