在發現關於Javascript命名空間之後,我試圖實現它們,但是在嘗試將命名空間方法附加到元素的onclick時遇到問題。如何在Javascript中添加一個名稱空間函數onclick?
我用這個方法來結束我的函數/方法/類(一個簡化的概念,而不是我的實際代碼):
;(function(window, undefined) {
//my namespace
var NS = {};
NS.test = {
f : function(param) {
alert(param);
}
}
NS.test.('test 2');
})(window);
內,一切工作正常,「測試2」會出現。
然而,當我試圖將其功能附加到點擊事件,做這樣的事情:
<a href-"#" onclick="NS.test.f('test');">Click me!</a>
這是行不通的,就像當我調用該函數後,這是行不通的})(window);
部分。
我試過叫它window.NS.test.f('test');
但沒有效果。
如何使onclick事件調用我的函數?
我可以在我的包裝中附加一個事件監聽器,就像我爲其他html元素毫無困難地做的一樣,但是在這種情況下會產生問題,因爲我使用javascript生成鏈接,並且我發現它更容易和更簡單隻需爲我的所有鏈接添加onclick="doSomething"
,而不是創建它們,然後緩存它們並添加事件偵聽器。
叫我懶,但在這個特殊的情況下,我更喜歡做
someDiv.innerHTML = my_Generated_Html_Code_With_OnClick;
,而不是
//demo code, ignore the flaws and the fact it won't work on IE
someDiv.innerHTML = my_generated_Html_code;
myLink = document.getElementById(id);
myLink.addEventListener('mousedown', NS.test.f('test'));
我不使用任何框架,我也不希望,因爲我想首先要更好地理解所謂的香草JavaScript。
我成立了一個jsfiddle here。
P.S.我必須承認,我不明白的命名空間完全,所以如果我在這裏做得不對或者我不應該來,我將不勝感激任何提示或更正
是的,我認爲多。但有什麼方法可以在外面使用它,或者我需要重新考慮我的代碼嗎? – BBog 2012-07-05 09:12:38
謝謝你,工作,我會在1分鐘內將你的答案標記爲接受! – BBog 2012-07-05 09:21:33