styleSheets
对象的title
属性是否为只读?为什么我不能改变它?
alert(document.styleSheets[0].title);
<link rel="stylesheet" href="js-practice.css" type="text/css" title="first">
<link rel="stylesheet" href="secondcss.css" type="text/css" title="second">
(不是Stack Snippet,因为样式表实际上不会被链接,所以会产生误导。)使用title
属性,我可以读取title
,但当我试图改变它时,它不会改变。
document.styleSheets[0].title = "newfirst";
这行不通。
我尝试使用内部CSS,结果是一样的。
alert(document.styleSheets[0].title);
<style title="first">
body {
background-color: red;
}
</style>
我只能读取title
属性,但当我试图改变它时,它不起作用。
然而,什么工作是当我的目标是link
元素,而不是。
var stylesheets2 = document.getElementsByTagName("link");
stylesheets2[0].title = "newtitle";
alert(document.styleSheets[0].title);
<link rel="stylesheet" href="js-practice.css" type="text/css title="first">
这确实有效,这导致了我的第二个问题-link
元素和styleSheets
对象之间的连接是什么?我认为我可以直接针对Link
元素更改title
的原因是因为我没有更改styleSheets
对象的Title
属性,而是更改该元素的html属性。
尝试使用ownerNode属性更改标题:
document.styleSheets[0].ownerNode.setAttribute('title', 'newtitle');
https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet/ownerNode