在发现关于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