0

我仍然在尝试学习纯 javascript,因为我跳过它并去学习 jQuery,尽管我不再想要一个库。我想要速度,无论如何我对纯 JavaScript 有一些疑问。

第一个问题:

var profile = document.getElementsByClassName("postprofile-details");
var details = profile.getElementsByTagName("dd");
    details[0].style.display = "none";

我不断收到错误消息

TypeError: Object #<NodeList> has no method 'getElementsByTagName'

我该怎么办?

下一个问题基本上与上面的相同代码有关,我知道 jQuery 有一个.prepend().append()那么我将如何在var profile上面插入额外的 HTML?

第三个也是最后一个问题

我想弄清楚这类问题,我一直在学习循环函数而不是,.each()这就是我想出的,但出现错误

var a = document.getElementsByClassName('postprofile-details');
   for (var i =0; i<a.length; i++) {
           a[i].getElementsByTagName('dd').style.display='none';
   }

手头的问题是我实际上如何确保我在 for 循环函数中选择循环?难道我

A ) a[i].getEle...

或者

B)a.getEle...

这些问题的任何答案都会有所帮助,我只是厌倦了使用 jQuery

跟随答案和评论

让我看看我能不能写这个

var profile = document.getElementsByTagName('postprofile-details');
for (var i=0; i<profile.length; i++) {
  var dd = profile[i].getElementsByTagName('dd');
  dd.style.display='none';
  var newEle = document.createElement('div');
  newEle.id = 'toggle';
  profile[i].appendChild(newEle);
 }

请让我知道我的代码中是否有任何问题,谢谢。

4

1 回答 1

2

TypeError: Object # has no method 'getElementsByTagName'

你应该使用:

profile[index].getElementsByTagName("dd");

使用所需的节点,您不能getElementsByTagName在节点列表上使用。

下一个问题基本上与上面的相同代码有关,我知道 jQuery 有一个 .prepend() 和 .append() 那么我如何将额外的 HTML 插入到上面的 var 配置文件中?

profile[index].appendChild(newNode);

最后一个答案:

作为第一个答案,您需要迭代所有 nodeList getElementsByTagName\getElementsByClassName返回。

于 2013-03-19T20:19:45.587 回答