2016-05-28 33 views
0

変数から代入キーワードを削除すると、 sWidth = window.outerWidth;グローバル関数変数が定義されていません

その変数は関数内であってもグローバルでなければなりません。多分あなたたちは私を助けることができます。 私のコードは次のとおりです。

$(".menu-icon").click(function() { 
    $('.navi').toggleClass('navtogg'); 
}); 
var maincol = document.getElementById('maincol'); 

function screenWidth() { 
    sWidth = window.outerWidth; 
    maincol.textContent = sWidth; 
    console.log(sWidth); 
} 
console.log(sWidth); 
var navListItems = document.querySelector("#liparent"); 

if(sWidth <= 850) { 
    $('.navi li').removeClass('hideul'); 
} 
if(sWidth > 850) { 
    $('.navi li').addClass('hideul'); 
} 
function liDropdown(e) { 
    if (sWidth <= 850) { 
     var subUl; 
     subUl = e.target.childNodes[2]; 
     console.log(subUl); 
     if (subUl.getAttribute('id') === 'togghide') { 
      subUl.removeAttribute('id'); 
     } else { 
      subUl.setAttribute('id', 'togghide'); 
     } 
    } 
} 

navListItems.addEventListener('click', liDropdown, false); 
+3

screenWidth関数を呼び出すものは何もないので、sWidthは決して設定されません。別のコードがありますか? –

+0

+1と@ PeterHaightのコメント。また、Brandonは、[厳密モード](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)ではない場合にのみ動作することを覚えておいてくださいを考慮する)。 –

+0

申し訳ありません私はonresize = "screenWidth()"をbodyに置くことと、同じ関数を使ってonloadすることを忘れてしまいました。 –

答えて

1

グローバル変数は設定されません。関数を呼び出すと設定されます。

function screenWidth() { 
    sWidth = window.outerWidth; 
    maincol.textContent = sWidth; 
    console.log(sWidth); 
} 
console.log(sWidth);//undefined 
screenWidth(); 
console.log(sWidth);//a number 
+0

また、OPは 'screenWidth()'関数の外で変数を定義する必要があります。 'var sWidth = null; 'のようなものがあります。 – JasonK

+0

ありがとうございましたJasonK!私はvar sWidthを入れてみました。投稿する前に機能の外にあったが、それは動作しなかった。だから "null"を追加することで修正されました。私は将来の参照のためにそれを覚えておく必要があります。 –

関連する問題