[英]Internal CSS injected by JavaScript is not applying
我使用JavaScript在網頁中添加了一個div
,並與該div
一起添加了一些CSS代碼,因此代碼如下所示
<script>
var rand= randomString();
var html = '<div class="'+rand+'">Welcome to StackOverflow!</div>
<style>.'+rand+'{color:red}</style>';
document.getElementById("parent_div").innerHTML = html;
function randomString() {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 18;
var randomstring = '';
for (var i=0; i<string_length; i++) {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
}
return randomstring;
}
</script>
這在大多數情況下都有效,並且由於某種原因該CSS不適用於此div
,但是CSS與HTML一起注入。 我還更改了順序,先添加CSS,然后添加HTML,但沒有運氣,盡管大多數情況下相同的代碼都能工作,但失敗幾次。
如果CSS不在head
,則不會應用CSS,除非它使用了scoped
屬性,並且style
標簽位於將被應用到的元素內。
這應該為您工作:
<script>
var html = '<div class="rule"><style scoped>.rule{color:red}</style>Welcome to StackOverflow!</div>';
document.getElementById("parent_div").innerHTML = html;
</script>
如果您想了解有關其工作原理的更多信息,請閱讀以下文章: http : //html5doctor.com/the-scoped-attribute/
不要像這樣添加樣式表,請嘗試以下操作:
document.styleSheets[0].addRule('.rule','color: red;');
var html = '<div class="rule">Welcome to StackOverflow!</div>';
document.getElementById("parent_div").innerHTML(html);
document.getElementById("parent_div").innerHTML = html
您需要以這種方式設置css。
我在程序中發現了錯誤,我在class
使用了隨機字符串生成器,當隨機字符串的第一個字符為數字時,以字符開頭的代碼失敗了
.3as324sdfsr4 => faield
.wer6sdf74hjg => worked
所以我在返回字符串前面添加了一個字符來解決這個問題
function randomString() {
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
var string_length = 18;
var randomstring = '';
for (var i=0; i<string_length; i++) {
var rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum,rnum+1);
}
return 's'+randomstring;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.