2011-06-21 7 views
2

JavaScriptで現在エラーが発生しています。コードは、Internet Explorerで JavaScript:Internet Explorerのdocument.getElementById()でエラーが発生しました

function loader() { 
    size = window.innerWidth; 
    size = size - 300; 
    mainj = document.getElementById('main1'); 
    mainj.style.left = size.toString() + 'px'; 
    submainj = document.getElementById('submain1'); 
    submainj.style.left = size.toString() + 'px'; 
    size = mainj.style.top + 26; 
    document.getElementById('submain1').style.top = size.toString() + 'px'; 
} 
onload = loader(); 

エラーが来るの下に与えられ、コードはFirefoxで完璧に動作します。 「mainj.style.left .....」 がどのように私はこの問題を解決することができます - エラーが5行目であることを示し、34行目

Message: Object required 
Line: 34 
Char: 1 
Code: 0 
URI: http://localhost/home.php 

ているエラーは、コードに与えられた5番目のラインですか?それは存在しない場合は

+0

コードを書式設定すると、読者が参考になる場合があります。また、 'mainj'と' mainj.style'が未定義であるかどうかを調べるためにデバッグを試みましたか? –

+0

?私は理解していません –

+0

あなたは、インデントやスペースなしで6に詰まったコードの10から15行にする必要があります。そのように読むのは難しいです。 –

答えて

3

これは、問題のある行である:

size=window.innerWidth-300; 

Internet Explorerは、私の知る限りでは、ウィンドウの内側の幅の概念がありません。次のコードは、ライブラリで見られるようなブラウザ間での適切な実装です。高さが必要な場合は、対応するinnerHeightプロパティとoffsetHeightプロパティもあります。

var size = 0; 
if(window.innerWidth) { 
    size = window.innerWidth; 
} else if (document.documentElement && document.documentElement.offsetWidth) { 
    size = document.documentElement.offsetWidth; 
} else if (document.body && document.body.offsetWidth) { 
    size = document.body.offsetWidth; 
} 
+0

エラーがコード内のどこにないのですか – Neal

+0

IEのエラーコンソールにエラーが表示されていましたが、あなたのコードが作業をしてコードがIEで正しく機能しています。 –

+0

@Anandあなたのために働いてうれしい – Jordan

8

あなたがIDでDOM要素を持っていることを確認してください= main1

そして、あなたのコードは、エラーが返されます。

何を行うことができますことは、条件を持っている。また、あなたのコード内のローカル変数を使用してみてください

if(mainj !== undefined) { //if mainj is a real object 
    //do code with mainj 
} 

(ワードvarで変数の前に)ので、彼らはグローバルスコープを入力しないでください。

+0

mainjは未定義ですが、エラーは実際にはinnerWidthプロパティを持たないIEからのものだと思います。 – Jordan

+0

@ジョーダン - それはOPがエラーが発生したと述べたところではない – Neal

+0

彼は(おそらく間違った)行番号を言ったが、 "style.left"プロパティを設定しようとする行について説明した。 – Jordan

関連する問題