デフォルト プロパティ用のリンクされた css ファイルと、wiewport が変更されると変更されるというニュース用の 2 つ目の css ファイルがあります。JS スクリプトの最後で、要素の offsetWidth をグローバル値 NavW に入れました。そのため、JS は間違った値を返すようです。DOM でのみ計算するのではなく、新しいものではなく最初のデフォルトの CSS プロパティに基づいて計算します。ただし、ターゲット要素は正しくレンダリングされました。条件の値「2」は、css ファイルではなくアイコンである Link 要素があるためです。
function switchTheme(newHref)
{
var newIndex;
newIndex = document.getElementsByTagName("link").length;
var newTheme = document.createElement("link");
newTheme.setAttribute("rel", "stylesheet");
newTheme.setAttribute("type", "text/css");
newTheme.setAttribute("href", newHref);
if ( newIndex == 2 )
{
document.getElementsByTagName("head").item(newIndex - 2).appendChild(newTheme);
}
else if ( newIndex > 2 )
{
var themeToReplace = document.getElementsByTagName("link").item(2);
document.getElementsByTagName("head").item(0).replaceChild(newTheme, themeToReplace);
}
NavW = document.getElementById("wrap").offsetWidth;
}