1

<div>このifステートメントから関数が呼び出されたときにサイズを変更しようとしています。関数が呼び出されたときに機能し、関数が機能することはわかっていますが、何らかの理由で関数 myFun()が呼び出されていないため、ifステートメントが機能していることはわかっています。mTr()myFun()

if (window.screen.height==568) { // iPhone 4"
    document.querySelector("meta[name=viewport]").content="width=320.1";
    myFun("divId");
    mTr();

}
function myFun(id)
{
    var obj = document.getElementById(id);
    if (obj)
    {
        obj.setAttribute("style", "height:300px;");
    }
}
function mTr()
{
    alert("Hello World!");
}
4

2 に答える 2

0

myFun()呼び出されない理由はいくつかあります。

  1. window.screen.height正確には568ではありません
  2. document.querySelector("meta[name=viewport]").content="width=320.1";スクリプトの実行を停止させるスクリプト エラーを生成する
  3. このコードの前に、実行を停止させるエラーがあります
  4. DOM が読み込まれる前にコードが実行されているため、関連する DOM 要素を見つけることができません。

最初に行うことは、ブラウザーのエラー コンソールを調べて、報告されているスクリプト エラー (ある場合) を確認することです。

2 番目に行うことifは、JavaScript デバッガー (ほとんどのブラウザーに組み込まれています) でステートメントにブレークポイントを設定し、次の各ステートメントをステップ実行して何が起こっているかを確認することです。

コードにステートメントを埋め込んconsole.log("xxx")で、コンソールにブレッドクラム トレイルを作成し、何が起こっているかを伝えることもできます。

于 2013-02-17T05:05:22.107 に答える
-1

私はすべてを再テストしました。私はあなたの問題を見つけたと思います。コードにエラーがありました。

ここにエラーがありました:

document.querySelector("meta[name=viewport]").content="width=320.1";

代わりに、次のようにする必要があります。

document.querySelector("meta[name=viewport]").setAttribute('content', 'width=320.1');  

完全な Javascript:

if (window.screen.height==568) { 

   document.querySelector("meta[name=viewport]").setAttribute('content', 'width=320.1');    
   myFun("divId");
   mTr();
}

function myFun(id)
{
   var obj = document.getElementById(id);
   if (obj)
   {
       obj.setAttribute("style", "height:300px;");
   }
}

function mTr()
{
   alert("Hello World!");
}

ここでテストできます: http://jsfiddle.net/KwGwd/

于 2013-02-17T05:05:06.727 に答える