我对JS相当陌生,我可以手工操作DOM和if/else语句。现在我正在尝试一些我不喜欢的东西,把迭代和数组结合起来,我很难理解这两种方法。
记住这一点:
<div id="firstAnchor">
将充当此链接的锚:
<a href="#firstAnchor"></a>
<div id="firstAnchor" style="display: inline-block;">First title</div>
<div id="secondAnchor" style="display: inline-block;">Second title</div>
<div id="thirdAnchor" style="display: inline-block;">Third title</div>
然后自动创建这三个链接*放入名为“anchorLinks”的div中:
<a href="#firstAnchor">Link to first title</a>
<a href="#seconAnchor">Link to second title</a>
<a href="#thirdAnchor">Link to third title</a>
我该怎么办?
*
例如,在此函数中:
(function create_anchor_link_list() {
//placed here
})();
编辑
:
data-anchor="firstAnchor"
等等,直到我意识到我不能基于
data-
数据-
我试过的属性:
(function anchorsInPage2(attrib) {
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# anchorsInPage2 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log(" ");
var elements = document.getElementsByTagName("*");
var foundelements = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i].attributes.length > 0) {
for (var x = 0; x < elements[i].attributes.length; x++) {
if (elements[i].attributes[x].name === attrib) {
foundelements.push(elements[i]);
}
}
}
}
return foundelements;
console.log(" ");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# / anchorsInPage2 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
})();
function anchorsInPage3() {
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# anchorsInPage3 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log(" ");
var elements = document.getElementsByTagName("*");
var foundelements = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i].attributes.length > 0) {
for (var x = 0; x < elements[i].attributes.length; x++) {
if (elements[i].attributes[x].name === "anchor") {
foundelements.push(elements[i]);
}
}
}
}
return foundelements;
console.log(" ");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# / anchorsInPage3 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
}
(function anchorsInPage1() {
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# anchorsInPage1 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log(" ");
var anchors = document.querySelectorAll('[anchor]');
for(var i in anchors){
console.log(i);
}
console.log(" ");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
console.log("=#=#=#=#=# / anchorsInPage1 function #=#=#=#=#");
console.log("=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#");
})();
进一步测试后的首次更新:
以巴尔马为例。下面的文本是对Barmar的直接回答(对于其他注释字段来说太长)
http://jsfiddle.net/e5u03g4p/5/
我的回答是:
data-anchor
,所以我猜括号里
querySelectorAll
告诉它我们指的是哪个特定属性,而不是我们想要的元素ID,这是“标准”书写
document.querySelectorAll("tagName")
document.querySelectorAll("[attributeName]")
.
对于第二个变量,您找到了ID为的第一个元素
anchorLinks
. 需要hashtag将ID指定为
querySelector
div
所以结果是
div#anchorLinks
(?).
然后取变量
anchors
(这将导致
具有
属性)并为每个属性触发一个函数,其中
d
函数的参数等于
数据锚定
属性。这个函数中的每一个元素都会重复
属性(即
variable anchors
函数中发生的事情是:
<a>
要素
-然后设置
href
<a>
元素添加到ID
的
数据锚定
-然后分配属性
title
<a>
元素的内容
数据锚定
元素(而不是原来的想法)
textContent
<
元素(我希望链接是图像而不是文本)
-然后我又添加了一个新的
class
<a>
元素以设置其样式