2017-01-23 149 views
0

我已經做了這個代碼來調整所有div的大小,當一個div大於其他divs。代碼在加載時執行,然後我希望我的嵌套函數在窗口大小調整時工作。我收到一個錯誤,說明resizeAgain()未定義。功能沒有定義調整大小

更新時間: 忘記回調:sameSize('.content', '.col1', '.col2');

<body onresize="resizeAgain()"> 
     function sameSize(e, selector1, selector2) { 

     var slave = $(selector1).height(); 
     var master = $(selector2).height(); 
     var maxHeight = Math.max(slave, master); 

     $(e).height(maxHeight); 

     function resizeAgain() { 
      $(e).css('height',''); 
      $(e).height(maxHeight); 
     } 
     sameSize('.content', '.col1', '.col2'); 
+1

這段代碼有語法錯誤。我敢打賭,這是一個範圍錯誤。 –

+0

我忘記了回調函數sameSize('。content','.col1','.col2'); –

+0

我同意李,但你應該先更新你的代碼。提供的代碼不正確。它錯過了方括號。 – NikxDa

回答

0

功能resizeAgain只是sameSize功能的範圍內可見,這就是爲什麼當您從窗口範圍內調用它有一個錯誤。

您可以在全球範圍內定義此功能:

<body onresize="resizeAgain('.content')"> 

function resizeAgain(e) { 
    $(e).css('height',''); 
    $(e).height(maxHeight); 
} 

function sameSize(e, selector1, selector2) { 
    var slave = $(selector1).height(); 
    var master = $(selector2).height(); 
    var maxHeight = Math.max(slave, master); 
    $(e).height(maxHeight); 
} 

sameSize('.content', '.col1', '.col2'); 
0

功能resizeAgain()sameSize(e, selector1, selector2)定義,這將改變其範圍使其無法訪問外sameSize(..)

你會發現在這個其他答案的詳細信息:javascript-nested-function