1

<div>当从此 if 语句调用函数时,我试图调整 a的大小。我知道该if语句有效,因为当mTr()调用该函数时它有效,并且我知道该函数myFun()有效,但由于某种原因,函数 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 元素。

首先要做的是检查您的浏览器错误控制台并查看报告了哪些脚本错误(如果有)。

第二件事是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 回答