2017-09-28 221 views
0

嗨,大家好,我的代碼沒有問題。 Exacly,我寫了函數來計算divHeight + margin。它看起來像這樣函數參數未定義

function mathMargin(divClass) { 
    divClass = "'."+divClass+"'"; 
    divHeight = $(divClass).outerHeight(true); 
    margin = divHeight * 0.3; 
    result = divHeight + margin; 
    return result; 
} 

我試圖調用函數這樣

alert(mathMargin(flatbox-title)); 

但不起作用,控制檯將返回「flatbox」沒有定義。怎麼了?

+2

您不需要'「'。」+ divClass +「'」'中的內部引號。 – Tushar

回答

3

您應該將該參數作爲string傳遞。

alert(mathMargin('flatbox-title')); 

當你寫的解釋看到參數作爲數學減法的結果。 (flatbox - 標題)。

另外,你不需要函數第一行的inner quotes。改爲:

divClass = '.' + divClass; 
+0

謝謝你,你是第一個 - 它工作,我接受你的問題10分鐘後 – sauero

+0

@sauero,不客氣。 –

1

flatbox-title不是變量,它是一個字符串。你需要用引號包裝它。

alert(mathMargin('flatbox-title')); 
0

錯誤

  • divClass = 「 '+ divClass + 」「'」;這將創建單引號 字符串。檢查你自己的控制檯。
  • 同時調用函數把雙引號的參數你 發送

function mathMargin(divClass) { 
 
    divClass = "."+divClass; 
 
    divHeight = $(divClass).outerHeight(true); 
 
    margin = divHeight * 0.3; 
 
    result = divHeight + margin; 
 
    return result; 
 
} 
 
alert(mathMargin('flatbox-title'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div class="flatbox-title">fa 
 
faww 
 
fwafaw 
 
fawfa 
 
w</div>

+0

@sauero ..檢查片段 – krishnar

1

作爲替代亞歷-lonut米哈伊和Manav答案,你也可以將元素:

function mathMargin(div) { 
    divHeight = div.outerHeight(true); 
    margin = divHeight * 0.3; 
    result = divHeight + margin; 
    return result; 
} 

alert(mathMargin($('.flatbox-title))); 
0

口譯員對待flatbox-title作爲變量,而不是字符串('flatbox-title'),並且由於您沒有聲明這樣的變量,所以會引發異常。

另一方面,爲什麼過分簡單的代碼?考慮將其重寫爲:

function mathMargin(divClass) { 
    var divHeight = $("."+divClass).outerHeight(true); 
    return divHeight * 1.3; 
} 

請注意,您在變量之前忘記了var關鍵字。不確定它是否有意或無意,但通常你應該避免這樣做,因爲沒有它將會創建一個全局變量。這可能會在稍後導致一些令人討厭的錯誤...