我为我的javascript代码使用命名空间,并且我认为我碰到了一个砖墙,其中有一个选择元素的属性属性。当我尝试使用(或不使用)命名空间调用函数时,错误控制台报告找不到该函数。Javascript命名空间+ onchange =不可能?
var MYNS = {}; //namespace
MYNS.modifySearchPage = function() {
....
var eSelect = document.createElement("select")
.....
eSelect.setAttribute('onchange', 'MYNS.handleChange(this)');
.....
//set up the options (value, textcontent, eSelect.appendChild(theOption)
...
// add the eSelect to the DOM
}
MYNS.handleChange = function (select) {
//parse the select options
}
结果我在控制台中,当我从下拉列表中选择一个项目是: Uncaught ReferenceError: MYNS is not defined
我尝试添加的命名空间的窗户,但似乎并没有帮助(和我不相信这是一件安全的事情)。
我曾尝试添加一个onclick处理程序到选择元素,但显然这是一个坏主意,因为选择不处理onclicks。
从调用和函数定义中剥离MYNS也没有帮助。
任何想法?
感谢, mwolfe
'MyNS.handleChange'应该是'MYNS.handleChange'? – couzzi 2013-03-14 01:55:37
''MYN.handleChange(this)''通过'eval()'运行,这是不必要的;只是传递函数的引用,或者使用事件监听器,例如'eSelect.addEventListener('change',handleChange);'看看[我对类似问题的回答](http://stackoverflow.com/a/15273623/451969),它演示了'addEventListener()'。请注意,IE8
2013-03-14 01:56:27
谢谢@ coouzzi/Dereck,拼写错误。 – 2013-03-14 02:15:28