2011-01-21 3 views
0

私はそうのようなHTMLページの先頭にCSSスタイルを追加しようとしていますを使用してHTMLページの先頭にCSSを追加しようとすると、CSSはecks.cssp決してに位置しかしは... javascriptの

var HEAD = document.getElementsByTagName("head")[0]; 
s = document.createElement('Style'); 
s.id = 'cssp'; 
s.type = 'text/css'; 
s.innerHTML = ecks.cssp; 
HEAD.appendChild(s); 

HTMLページに表示されます。私は間違って何をしていますか?

ちょうどfyi、私はテストにクロムを使用しています。

+0

ecks.csspには何が含まれていますか? – naveen

+0

ecksは 'HTMLStyleElement'、ecks.csspは' CSS'自体です。 – Skizit

+0

OK ... naveenは正しいです...何ですか?それには何が含まれていますか?ただし、src = "file.css"をタグに挿入すると、外部ファイルにリンクされたスタイルシートを作成できます。 – Andry

答えて

3

はstyle要素を追加する方法がありますが、彼らはリンクを追加することとは異なり、ブラウザに依存しています。

文字列は有効なCSSでなければなりません。

function addStyle(str){ 
    var el= document.createElement('STYLE'); 
    el.type= 'text/css'; 
    el.media= 'screen'; 
    if(el.styleSheet){ 
     // IE 
     el.styleSheet.cssText= str; 
    } 
    else{ 
     // Most browsers 
     el.appendChild(document.createTextNode(str)); 
    } 
    document.getElementsByTagName('HEAD')[0].appendChild(el); 
} 
0

Googleで設立され、あなたに適応するだけヒント:

function loadcss(filename){ 
    var fileref=document.createElement("link") 
    fileref.setAttribute("rel", "stylesheet") 
    fileref.setAttribute("type", "text/css") 
    fileref.setAttribute("href", filename) 
    document.getElementsByTagName("head")[0].appendChild(fileref) 
} 

loadcss("mystyle.css", "css") //dynamically load and add this .css file 

リンクもJSをロードするためのソースが含まれています。

http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

+1

これらのプロパティを設定するために 'setAttribute'を使用しないでください。DOM要素のプロパティを直接使用するか、場合によってはIEを泣かせます。 –

+0

私はナビゲータの互換性をチェックしていませんでしたが、ヒントのおかげで! :) –