我寫了一個將行爲綁定到元素的函數。假設我們有兩個輸入。然後,我們希望能夠展示這些輸入這樣的提示,全局範圍函數如何確定變量不再活動?
function ElementHinter(element){
element.showNotice = function(message, type) {
var errorBorderStyle = "1px solid #cc3e22";
var warningBorderStyle = "1px solid #cc9322";
var parent = element.parents('.value');
element.css("border", type == element.ERROR ? errorBorderStyle : warningBorderStyle);
if (!parent.find('.error-message').length) {
messagePublisher(message, type);
}
}
element.removeNotice = function() {
element.css("border-color", "#aaa #c8c8c8 #c8c8c8 #aaa");
element.parents('.value').find('.error-message').remove();
}
var messagePublisher = function(message, type) {
var parent = element.parents('.value');
var errorStyle = "#cc3e22";
var warningStyle = "#cc9322";
var html = "<span class='error-message'>" + message + "</span>";
parent.css("color", type == ElementHinter.ERROR ? errorStyle : warningStyle);
jQuery(parent).append(html);
}
return element;
}
ElementHinter.ERROR = "ERROR"
ElementHinter.WARNING = "WARNING"
var priceElement = ElementHinter($('input#price'));
var discountPercent = ElementHinter($('input#discount'));
priceElement.showNotice("Bad price friend",ElementHinter.WARNING);
discountPercent.showNotice("Bad discount friend",ElementHinter.WARNING);
現在,如果我得到的messagePublisher
擺脫var
的兩個通知將在只是一個元素顯示。爲什麼會發生?如果我擺脫var
element
在這種情況下意味着什麼?
你明白全局變量是什麼嗎? – dfsq
檢查[Javascript中的變量範圍](https://docs.microsoft.com/en-us/scripting/javascript/advanced/variable-scope-javascript)。 – Oen44
@dfsq是的,我這樣做,問題是什麼時候函數是全局的如何解釋元素。 – shampoo