我正在尝试更改HTML页面上链接的字体颜色。虽然其他JavaScript可以正常工作,但链接拒绝更改颜色。
最初,链接字体颜色为白色:
#invalid-page-grid-container{
display:grid;
justify-content:center;
}
#invalid-page-h1{
display:flex;
justify-content:center;
grid-row: 1/2;
}
#invalid-page-para{
/*display:flex;*//*UNCOMMENT THIS AND YOU'LL SEE SPACE GETTING ADDED AROUND <a> of the html*/
justify-content:center;
grid-row: 2/3;
}
但是,当单击按钮时,将执行以下功能:
a {
color: white;
}
必须有另一种在JavaScript中定义“ a”的方法,但是google并没有帮助。有什么想法吗?
答案 0 :(得分:2)
您必须先选择链接,然后才能对其进行修改。
有两种方法可以选择JavaScript中的元素。最常见的是:
document.getElementById()
,如果要通过其HTML id
属性选择单个元素
document.querySelector()
或document.querySelectorAll()
,如果要选择与CSS选择器匹配的第一个或所有元素
document.getElementsByClassName()
,如果您要根据元素的class
属性选择元素
此外,您可以通过document.links
答案 1 :(得分:0)
此行:document.a.style.color = "black";
仅尝试访问a
对象中未定义的成员document
。您必须选择所需的a
(页面上的锚元素)元素,然后应用颜色修改。
有几种方法可以进行a
元素的“选择过程”:
a
元素提供了ID
,则可以使用内置的getElementById
方法:即,给ID
的'anchor-element' a
元素:var anchor = document.getElementById('anchor-element
);`。a
元素提供了class
的话,另一种方法是使用内置的getElementsByClassName
方法:即给class
的'anchor-element'到a
元素,可以说它是拥有该类的唯一元素:var anchor = document.getElementsByClassName('anchor-element
)[0];`。querySelector
,querySelectorAll
或getElementsByTagName
。这是一个演示,我们将使用getElementById
和getElementsByClassName
来更改单击按钮时一些链接的颜色:
var btn1 = document.getElementById('btn-1'),
btn2 = document.getElementById('btn-2');
btn1.addEventListener('click', handler);
btn2.addEventListener('click', handler);
function handler(e) {
if(e.target === btn1) {
// selecting the 'a' element using 'getElementById'.
var a = document.getElementById('some-id');
a.style.color = 'red';
} else {
// selecting the 'a' element using 'getElementsByClassName'.
var a = document.getElementsByClassName('some-class')[0];
a.style.color = 'green';
}
}
/* just for this demo */
a, button {
display: block;
}
<a href="#" id="some-id">getElementById is used</a>
<button id="btn-1">Change 1<sup>st</sup> link's color</button>
<a href="#" class="some-class">getElementsByClassName is used</a>
<button id="btn-2">Change 2<sup>nd</sup> link's color</button>
希望我进一步推动了你。
答案 2 :(得分:0)
尝试使用此代码即可
<html>
<head>
<style>
a {
color: white;
}
</style>
</head>
<body>
<a href="#">link text</a>
<button type="button" onclick="myFunction()">Click Me!</button>
</body>
<script>
function myFunction() {
document.getElementsByTagName("a")[0].style.color = "black";
}
</script>
</html>
答案 3 :(得分:0)
有很多方法可以做到这一点。在将window.onload
事件附加到元素之前,请记住使用onclick
确保已加载元素。这是方法之一。
window.onload = function() {
function myFunction() {
var x = document.getElementsByTagName('a');
var i;
for (i = 0; i < x.length; i++) {
x[i].style.color = 'black';
}
}
// Change all links
document.getElementById('button1').onclick = function () {
myFunction();
}
// Change one link
document.getElementById('button2').onclick = function () {
document.getElementById('onelink').style.color = 'blue';
}
}
body { background-color: #999999; }
a { color: white; }
#button1, #button2 { cursor: pointer; }
<a href="https://www.google.com">Google</a><br><br>
<a href="https://www.youtube.com" id="onelink">YouTube</a><br><br>
<input type="submit" id="button1" value="Change all links to black"><br><br>
<input type="submit" id="button2" value="Change one link to blue">