我想知道我的代码有什么问题。 如果属性“rel =”stylesheet“
,我想删除所有”链接“标签这是我的HTML代码
<html>
<head>
<title>teset</title>
<meta charset="utf-8" />
<meta name="description" content="test." />
<meta name="author" content="Me" />
<link rel="author" href="www.mysite.uk" />
<link rel="stylesheet" type="text/css" href="www.mysite.uk/css/style.css />
<link rel="stylesheet" type="text/css" href="www.mysite.uk/css/style2.css />
</head>
<script src = "deleteCSS.js"></script>
<body onload="noCSS()">
<p> test !!</p>
</body>
</html>
这是我的JS名为“deleteCSS.js”
function noCSS(){
//I save tag "link"
var CSSlink = document.getElementsByTagName("link");
var CSSatt = CSSlink.getAttribute("rel");
for (i=0; i < CSSlink.length; i++){
if (CSSatt[i] == "stylesheet"){
CSSlink[i].remove(); }
}
}
答案 0 :(得分:4)
答案 1 :(得分:0)
如果您想要纯JavaScript实现:
(function() {
var links = document.getElementsByTagName('link');
for(var i=0; i<links.length; i++) {
links[i].getAttribute('rel') === 'stylesheet' && links[i].remove();
}
})();
将其复制到文件no-css.js
并将其放在HTML文件的末尾。
您的代码无效,因为getElementsByTagName
正在返回NodeList
,因此调用getAttribute('rel')
会返回错误TypeError: Object #<NodeList> has no method 'getAttribute'
。因此,您必须遍历所有链接(节点),如果他们将rel
属性设置为stylesheet
,请将其删除。
希望这有帮助!
答案 2 :(得分:0)
function noCSS() {
var links = document.getElementsByTagName("link");
for (var i = links.length - 1; i >= 0; --i) {
if (links[i].rel === "stylesheet") {
links[i].parentNode.removeChild(links[i]);
}
}
}
rel
的{{1}}属性; <link>
时,links[0]
代替它,当您移除links[1]
时,它实际上删除了其余的第二个; links[1]
,并始终删除while (links.length)
(其余的第一个)。 答案 3 :(得分:0)
这是另一个JavaScript实现:
function noCSS(){
var CSSlink = document.getElementsByTagName("link");
for (i=0; i < CSSlink.length; i++ )
{
if (CSSlink[i].getAttribute("rel") === "stylesheet")
{
CSSlink[i--].remove();
}
}
}
确保在href
标记的末尾输入引号,例如
href="www.mysite.uk/css/style.css"