2014-12-06 116 views
-1

我试图将所有CSS代码添加到我的javaScript中,然后通过js文件加载它,我这样做,问题在哪里?这是我的js文件的第一行:将CSS文件附加到javascript到单个.js文件中

var innerstyle = '#container{width:800px;background:silver;margin:20px auto;padding:10px;color:gray;border-radius:5px}input{padding:3px}input[name="jsvar"]{width:250px;font-family:courier}#display{border:2px gray solid;border-radius:5px;color:white;margin:10px 0}#display #dtitle{background:gray;border-radius:2px 0;padding:10px 5px}#display #dmsg{min-height:20px}#clear{float:right;cursor:pointer;text-decoration:none;color:white;background:red;padding:2px 10px;border-radius:5px}#clear:hover{background:gold}.rtitle{padding:8px;background:pink;text-align:center}.rtitle input{border:1px solid red;float:right}.rtext{max-height:200px;overflow:auto;margin-bottom:5px}.rtext td{min-width:100px}.secfilter{margin-left:5px}'; 
var styletag = document.createElement('style'); 
var inst = document.createTextNode(innerstyle); 
styletag.appendChild(inst); 
var headref = document.getElementsByName('head'); 
headref.appendChild(styletag); 

,这里是铬控制台消息:

Uncaught TypeError: undefined is not a function 
Line 6; 
+0

''getElementsByName' [...]返回一个节点列表集合与给定名称[...]'不一个节点。我敢肯定你正在寻找'getElementsByTagName'而不是'getElementsByName' – 2014-12-06 14:59:34

+0

我不确定你是否可以像这样注入CSS。尝试查看http://stackoverflow.com/questions/1720320/how-to-dynamically-create-css-class-in-javascript-and-apply或http://davidwalsh.name/add-rules-样式表 – ckuijjer 2014-12-06 15:00:56

+0

'.getElementsByName()'函数用于通过其“名称”属性检索表单字段。你想''.getElementsByTagName()'在这里。 – Pointy 2014-12-06 15:03:29

回答

1
var innerstyle = '#container{width:800px;background:silver;margin:20px auto;padding:10px;color:gray;border-radius:5px}input{padding:3px}input[name="jsvar"]{width:250px;font-family:courier}#display{border:2px gray solid;border-radius:5px;color:white;margin:10px 0}#display #dtitle{background:gray;border-radius:2px 0;padding:10px 5px}#display #dmsg{min-height:20px}#clear{float:right;cursor:pointer;text-decoration:none;color:white;background:red;padding:2px 10px;border-radius:5px}#clear:hover{background:gold}.rtitle{padding:8px;background:pink;text-align:center}.rtitle input{border:1px solid red;float:right}.rtext{max-height:200px;overflow:auto;margin-bottom:5px}.rtext td{min-width:100px}.secfilter{margin-left:5px}'; 
var styletag = document.createElement('style'); 
var inst = document.createTextNode(innerstyle); 
styletag.appendChild(inst); 
//var headref = document.getElementsByName('head'); // Wrong! 
var headref = document.getElementsByTagName('head')[0]; 
headref.appendChild(styletag); 

HTML DOM getElementsByName 返回所有元素的集合在DOCUME NT与指定名称(name属性的值) (“‘属性弃用HTML5和由’ID”属性为许多元素代替。您应该使用getElementById感谢@ t.niese) 像

<input name="somename" />

document.getElementsByName("somename"); 

,而不是您可以使用标签的ID喜欢

<input name="somename" id="theId" />

和查询与元素:

document.getElementById('theId') 

的getElementById返回与指定值

HTML DOM getElementsByTagName(tag) ID属性找到标签名称“标签”的所有元素,并返回一个数组,如果你发现该元素通过标签名称'head'数组中的第一个位置,将是head元素。

+0

只需在下面添加注释“错误!”和_showhow_正确的解决方案并不是一个真正有用的答案。 – 2014-12-06 15:05:05

+0

请不要链接到w3schools。尽管他们在很长时间内解决了许多问题,但仍然充满了缺陷和不准确之处。 – 2014-12-06 15:06:23

+0

@ t.niese感谢您的建议 – leobr6 2014-12-06 15:09:05

0

该功能document.getElementsByName('head');返回数组。尝试也许是这样的

document.getElementsByName('head')[0] 

它会给你的名头瑶池元素head

相关问题