Javascript 作用域问题请教 javascript 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 抱歉,补充一下:var __event = { ba_click : function () { alert('aaa'); }};var __form = { layout: function() { document.getElementById('id').append("<a href='javascript:__event.baclick()'>click事件绑定无效</a>"); }};这里是获取的DOM对象,动态整理的 a 链接,为什么这样事件绑定不上去呢? 看看是不是作用域问题,写在html中的js代码只能访问全局变量window['__event'] = { ba_click : function () { alert('aaa'); }};试试 这代码什么意思啊? 我把这段代码放到Js文件中整个JS就不行了。备注: 我的JS不是放到页面上的,不引用的JS文件。<script src="/js/aaa.js" .../>我好困惑 你写错了 baclick() //这是你写的 document.body.append("<a href='javascript:__event.baclick()'>click事件绑定无效</a>");ba_click() //这是你定义的 还有,浏览器是报 “__event” 未定义。这个类都没有找到,不知道为什么。 可能是append那个方法的问题吧 我这样好使var __event = { ba_click : function () { alert('aaa'); }}; var __form = { layout: function() { document.body.innerHTML="<a href='javascript:__event.baclick()'>click事件绑定无效</a>"; }};__form.layout() 这个是我真实的代码。使用的 jqury.append() 方法。(备注:页面上也有效果,增加的 a 链接也生效) 好奇怪,为什么 alert(this) 是 [object Window] 呢? 你代码写的比我好很多,深入的我不太懂了! 不过试了一下,把方法绑定到onclick时间 就返回对象本身了 我想可能因为a标签的默认时间就是返回window对象,因为它是个链接阿 默认事件必然是返回一个新的窗口 恩恩,你分析了以后好像是这样子。我总感觉是弹出DOM,刚才查了一下资料。好像不同的浏览器处理的机制不一样。呵呵,我写的代码弱爆了。 1、首先,原生没有append这个方法,是appendChild(),如果是JQ也不是document.body这样写的。2、是__event.ba_click() 而不是__event.baclick() 。3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script><script>var __event = { ba_click : function () { alert('aaa'); }}; var __form = { layout: function() { $("body").append("<a href='javascript:__event.ba_click()'>click事件绑定无效</a>"); }};__form.layout();</script> 学习了。1、首先,原生没有append这个方法,是appendChild(),如果是JQ也不是document.body这样写的。2、是__event.ba_click() 而不是__event.baclick() 。3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script><script>var __event = { ba_click : function () { alert('aaa'); }}; var __form = { layout: function() { $("body").append("<a href='javascript:__event.ba_click()'>click事件绑定无效</a>"); }};__form.layout();</script> 这代码什么意思啊? 我把这段代码放到Js文件中整个JS就不行了。备注: 我的JS不是放到页面上的,不引用的JS文件。<script src="/js/aaa.js" .../>我好困惑 拷贝错了吧,这句代码不可能出错的 1、首先,原生没有append这个方法,是appendChild(),如果是JQ也不是document.body这样写的。2、是__event.ba_click() 而不是__event.baclick() 。3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script><script>var __event = { ba_click : function () { alert('aaa'); }}; var __form = { layout: function() { $("body").append("<a href='javascript:void(0);' onclick="TestTestsss()" >click事件绑定无效</a>"); }};__form.layout();</script>----------------------------------------------------------------------------------------------回复:尝试过了,没有作用。页面上增加:<script>function TestTestsss() { alert('1111');}TestTestsss();</script>结果: 页面上直接定义的一个方法,(顶级作用域)动态加载的DOM对象,还是无法找到。----------------------------------------------------------------梳理一下这里的逻辑。1、JS动态构建的按钮。(button_A)2、(button_A) 单击事件动态构建的按钮 (button_B) 就是 __form.layout()经过两层动态构建的DOM,是不是这里出的问题啊 ? 谢谢各位大神,小弟不才,耽误大家时间了。iframe 惹得祸。 var __event = { ba_click : function () { alert('aaa'); }}; var __form = { layout: function() { $('body').append("<a href='javascript:__event.ba_click ()'>click事件绑定无效</a>"); }};__form.layout(); Javascript中怎么得到模式窗体返回的值 网页制作背景图片,难道就没有完美的解决办法吗? 打印机效果,问题处在哪儿了 JavaScript 焦点的问题? 如何求出当前的document.body高度? 请问能不能用JavaScript判断客户端浏览器有没有禁用Cookie? js引号多层嵌套的问题 如何使用javascript实现自这样一个按钮 请问关于radio按钮,急?谢谢了 怎么给文件域设初值??急,急,急,在线等!!!! Js种如何引用别的js? 求大神指点,列表自动定位
ba_click : function () {
alert('aaa');
}
};var __form = {
layout: function() {
document.getElementById('id').append("<a href='javascript:__event.baclick()'>click事件绑定无效</a>");
}
};
这里是获取的DOM对象,动态整理的 a 链接,为什么这样事件绑定不上去呢?
window['__event'] = {
ba_click : function () {
alert('aaa');
}
};
试试
备注: 我的JS不是放到页面上的,不引用的JS文件。<script src="/js/aaa.js" .../>我好困惑
ba_click() //这是你定义的
这个类都没有找到,不知道为什么。
ba_click : function () {
alert('aaa');
}
};
var __form = {
layout: function() {
document.body.innerHTML="<a href='javascript:__event.baclick()'>click事件绑定无效</a>";
}
};
__form.layout()
这个是我真实的代码。
使用的 jqury.append() 方法。
(备注:页面上也有效果,增加的 a 链接也生效)
你代码写的比我好很多,深入的我不太懂了! 不过试了一下,把方法绑定到onclick时间 就返回对象本身了
我想可能因为a标签的默认时间就是返回window对象,因为它是个链接阿 默认事件必然是返回一个新的窗口
恩恩,你分析了以后好像是这样子。我总感觉是弹出DOM,刚才查了一下资料。
好像不同的浏览器处理的机制不一样。呵呵,我写的代码弱爆了。
2、是__event.ba_click() 而不是__event.baclick() 。
3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
var __event = {
ba_click : function () {
alert('aaa');
}
};
var __form = {
layout: function() {
$("body").append("<a href='javascript:__event.ba_click()'>click事件绑定无效</a>");
}
};
__form.layout();
</script>
2、是__event.ba_click() 而不是__event.baclick() 。
3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
var __event = {
ba_click : function () {
alert('aaa');
}
};
var __form = {
layout: function() {
$("body").append("<a href='javascript:__event.ba_click()'>click事件绑定无效</a>");
}
};
__form.layout();
</script>
备注: 我的JS不是放到页面上的,不引用的JS文件。<script src="/js/aaa.js" .../>我好困惑
拷贝错了吧,这句代码不可能出错的
2、是__event.ba_click() 而不是__event.baclick() 。
3、只要_event是顶级作用域,即window下,就可以用,这跟是单独xx.js 还是页面里的script没很大关系
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
var __event = {
ba_click : function () {
alert('aaa');
}
};
var __form = {
layout: function() {
$("body").append("<a href='javascript:void(0);' onclick="TestTestsss()" >click事件绑定无效</a>");
}
};
__form.layout();
</script>
----------------------------------------------------------------------------------------------
回复:
尝试过了,没有作用。
页面上增加:<script>
function TestTestsss() {
alert('1111');
}
TestTestsss();
</script>
结果:
动态加载的DOM对象,还是无法找到。----------------------------------------------------------------
梳理一下这里的逻辑。
1、JS动态构建的按钮。(button_A)
2、(button_A) 单击事件动态构建的按钮 (button_B)
就是 __form.layout()经过两层动态构建的DOM,是不是这里出的问题啊 ?
iframe 惹得祸。
var __event = {
ba_click : function () {
alert('aaa');
}
};
var __form = {
layout: function() {
$('body').append("<a href='javascript:__event.ba_click ()'>click事件绑定无效</a>");
}
};
__form.layout();