3 回答

TA貢獻1802條經驗 獲得超5個贊
您對兩個變量使用了相同的名稱。因為它們是用聲明的,var所以它不會拋出錯誤。第二個將覆蓋第一個。
只需更改變量之一的名稱
也包.css進去""
window.addEventListener("load", setStyles);
function setStyles() {
var styleNum = randInt(5);
var styleElm = document.createElement("link");
styleElm.setAttribute("rel", "stylesheet");
styleElm.setAttribute("id", "fancySheet");
styleElm.setAttribute("href", "na_style_" + styleNum + ".css");
document.head.appendChild(styleElm);
}

TA貢獻1854條經驗 獲得超8個贊
行內用引號styleNum.setAttribute("href", "na_style_" + styleNum + .css);括.css起來,因為它是一個字符串而不是變量名。
styleNum.setAttribute("href", "na_style_" + styleNum + '.css');
window.addEventListener("load", setStyles);
function setStyles() {
var styleNum = randInt(5);
var styleEle = document.createElement("link");
styleEle.setAttribute("rel", "stylesheet");
styleEle.setAttribute("id", "fancySheet");
styleEle.setAttribute("href", "na_style_" + styleNum + ".css");
document.head.appendChild(styleNum);
}

TA貢獻1884條經驗 獲得超4個贊
隨機生成的數字旨在與元素節點分開存儲在變量中。由于您使用 styleNum 作為兩個變量的名稱,首先將生成一個隨機數并將其存儲在 styleNum 中,然后將創建新元素節點并在隨機生成的數字的右側,由于變量無法存儲,該數字現在永遠丟失兩個不同的值。為了避免這種情況并保留隨機數以供稍后在函數中使用,您必須將要創建的元素節點命名為除styleNum
這是避免這種情況的代碼示例:
function setStyles() {
var styleNum = randInt(5);
var styleElementNode = document.createElement("link");
styleElementNode.setAttribute("rel", "stylesheet");
styleElementNode.setAttribute("id", "fancySheet");
styleElementNode.setAttribute("href", "na_style_" + styleNum + ".css");
document.head.appendChild(styleElementNode);
}
還要注意我如何在最后一行的函數參數中添加" "周圍.css并更改styleNum為styleElementNode。這是因為該函數旨在將創建的元素節點而不是隨機生成的數字附加到文檔頭。
添加回答
舉報