问问题
139 次
4 回答
1
考虑以下:
- 在
for
循环中使用i < mainarticle.length
而不是i <= mainarticle.length
. 您当前for
定义的循环将使您脱离mainarticle
. - 当我们查看
for
循环时...我建议声明一个要存储的变量,mainarticle.length
这样您就不会在length
每次迭代时都查找属性:for (var i = 0, l = mainarticle.length; i < l; i++)
. href
是锚点 DOM 元素的一个属性,所以只需像这样引用它:current_article.firstChild.attributes.href
而不是current_article.firstChild.attributes[href]
.var theParagraph = getElementsByClassName('catg_list');
抓取具有该类名的每个theParagraph
DOM 元素,因此实际上是三个元素的节点集合。- 无论如何,你已经有了你正在寻找的元素。您将其分配给变量
current_article
,因此只需使用current_article.id = 'aaaa';
.
于 2012-06-26T11:45:35.750 回答
1
current_article.firstChild.attributes[href]
肯定应该是current_article.firstChild.attributes['href']
或current_article.firstChild.attributes.href
于 2012-06-26T10:45:24.007 回答
0
你需要使用
current_article.firstChild.attributes.href.value or
current_article.firstChild.attributes.href.nodeName or
current_article.firstChild.attributes.href.name
(还有更多)
代替
current_article.firstChild.attributes.href
只要
于 2013-09-29T01:05:21.787 回答
0
在您的代码中:
> for (var i = 0; i <= mainarticle.length; i++) {
> var current_article = mainarticle[i];
> if (url_string == current_article.firstChild.attributes[href]) {
元素的 attributes 属性返回NamedNodeMap。这些属性可以通过名称访问,但您必须使用正确的语法。要使用方括号表示法获取名为href的属性:
current_article.firstChild.attributes['href'];
要使用点表示法(允许 href 是有效标识符),这可能更方便:
current_article.firstChild.attributes.href;
但这只是返回属性节点。如果你想要实际值:
current_article.firstChild.attributes.href.value;
但这一切似乎需要做很多工作,为什么不直接访问属性来获取值:
current_article.firstChild.href;
> var theParagraph = getElementsByClassName('catg_list');
getElementsByClassName是文档和元素接口的一种方法(最初在 HTML5 中标准化,但现在移至 DOM 4 核心),因此:
var theParagraph = document.getElementsByClassName('catg_list');
.
> theParagraph.setAttribute('id', 'aaaa');
但是 getElementsByClassName 返回一个实时HTML 集合(一种NodeList),并且它们没有setAttribute方法。您可以通过索引访问成员。如果您希望只返回一个元素,它将位于索引 0 处,您可以使用以下方法设置其 id 属性:
theParagraph[0].id = 'aaa';
编辑
访问 href 属性:
<a href="http://www.google.com" onclick="
return confirm('Do you really want to go to ' + this.href + '?')
">Google</a>
于 2012-06-26T11:15:45.147 回答