javascript";onclick";事件仅在Chrome中失败
我正在更正一个有错误的网页,我检测到它在哪里,但我不知道它的基础 这个js在Firefox和explorer中工作得很好,但在Chrome中却不行 那么,我们开始吧: --HTML--javascript";onclick";事件仅在Chrome中失败,javascript,jquery,onclick,Javascript,Jquery,Onclick,我正在更正一个有错误的网页,我检测到它在哪里,但我不知道它的基础 这个js在Firefox和explorer中工作得很好,但在Chrome中却不行 那么,我们开始吧: --HTML-- --JAVASCRIPT-- 函数gotoSection(部分){ 警报(第节); $('#section_container div').css(“显示”、“无”); $(section.css(“显示”、“块”); } -- 因此,在Firefox中,警报显示“[object HtmlLevel]”,
--JAVASCRIPT--
函数gotoSection(部分){
警报(第节);
$('#section_container div').css(“显示”、“无”);
$(section.css(“显示”、“块”);
}
--
因此,在Firefox中,警报显示“[object HtmlLevel]”,而在Chrome中,警报显示“undefined”。更改
<div id='mesa' onclick='gotoSection( mesa )' >
编辑: 在您的评论之后,很明显,您的错误在于您为多个元素提供了相同的id。这是非法的,并且不能保证,无论使用何种浏览器,使用
$(“#mesa”)可以在元素上获得哪个
例如,这里有一个解决方案:
<div id=mesaOpener> ... </div>
<div id=anotherDivOpener> ... </div>
<div id=mesa> ... </div>
<div id=anotherDiv> ... </div>
<script type="text/javascript">
$(function(){
$('[id$=Opener]').on('click', function(){
$('#section_container div' ).hide();
$('#'+this.id.slice(0,4)).show();
});
});
</script>
。。。
...
...
...
$(函数(){
$('[id$=Opener]')。在('单击',函数()上{
$('#section_container div').hide();
$('#'+this.id.slice(0,4)).show();
});
});
单击开场白
显示div
更改
<div id='mesa' onclick='gotoSection( mesa )' >
编辑:
在您的评论之后,很明显,您的错误在于您为多个元素提供了相同的id。这是非法的,并且不能保证,无论使用何种浏览器,使用$(“#mesa”)可以在元素上获得哪个
例如,这里有一个解决方案:
<div id=mesaOpener> ... </div>
<div id=anotherDivOpener> ... </div>
<div id=mesa> ... </div>
<div id=anotherDiv> ... </div>
<script type="text/javascript">
$(function(){
$('[id$=Opener]').on('click', function(){
$('#section_container div' ).hide();
$('#'+this.id.slice(0,4)).show();
});
});
</script>
。。。
...
...
...
$(函数(){
$('[id$=Opener]')。在('单击',函数()上{
$('#section_container div').hide();
$('#'+this.id.slice(0,4)).show();
});
});
单击开场白
显示div
试试看
试试看
台面不应该是字符串吗?我是说onclick='gotoSection(“mesa”)'mesa不应该是字符串吗?我的意思是onclick='gotoSection(“mesa”)'$(section)-section可以是字符串(id选择器)或有效的dom对象。
IE和Firefox有一个有趣的怪癖:您可以直接使用id作为dom对象的js引用,而无需显式的getElementById——例如,这里的mesa指的是div对象
Chrome/Safari不支持此功能。$(节)-节可以是字符串(id选择器)或有效的dom对象。
IE和Firefox有一个有趣的怪癖:您可以直接使用id作为dom对象的js引用,而无需显式的getElementById——例如,这里的mesa指的是div对象
Chrome/Safari不支持此功能。在onclick中,您应该编写gotoSection($(“#mesa”)
或使用this
或使用适当的。在使用jQuery时单击()
/。on()
方法。因此,这取决于是否在全局范围内定义了“mesa”(以便onclick可以访问它)。你不是说“gotoSection(this)”吗?你试过alert($(section));-我看不出还有什么其他方法可以确定“mesa”是一个ID标签……它可以是任何东西!你能做一把小提琴吗?我在Chrome上没有看到错误。你的Chrome版本是什么?在onclick中,你应该编写gotoSection($(“#mesa”)
或者使用this
或者使用适当的。在使用jQuery时单击()
/.on()
方法。因此,这取决于“mesa”是否在全局范围内定义(以便onclick可以访问它)。你不是说“gotoSection(this)”吗?你试过alert($(section));-我看不出还有什么其他方法可以确定“mesa”是一个ID标签……它可以是任何东西!你能做一把小提琴吗?我在Chrome上没有看到错误。你的Chrome版本是什么?“…这会更惯用”,并且它的优点是不需要gotoSection
就可以成为全局的。:-)“并非所有浏览器都会为每个元素创建一个窗口属性,该属性的id
”可能是真的,也可能不是真的(哪些浏览器不是真的?),但Chrome会创建这些属性:()。所以在理论上,这不是这里发生的事情。不过,使用这个应该可以解决这个问题。@T.J.Crowder你是对的。甚至
。我看不出这里发生了什么。它不应该与这个指针一起工作,因为gotoSection()必须与页面上的另一组div一起工作。代码非常糟糕,而且有很多错误。我要重构一切,因为代码太疯狂了。@GerSoto看看我编辑过的答案。我认为它可以满足您的需要。”…这会更为惯用”,并且它的优点是不需要gotoSection
就可以成为全局的。:-)“并非所有浏览器都会为每个元素创建一个窗口属性,该属性的id
”可能是真的,也可能不是真的(哪些浏览器不是真的?),但Chrome会创建这些属性:()。所以在理论上,这不是这里发生的事情。不过,使用这个应该可以解决这个问题。@T.J.Crowder你是对的。甚至
。我看不出这里发生了什么。它不应该与这个指针一起工作,因为gotoSection()必须与页面上的另一组div一起工作。代码非常糟糕,而且有很多错误。我要重构一切,因为代码太疯狂了。@GerSoto看看我编辑过的答案。我认为它能满足你的需要。请参阅我答案下面的讨论:至少在最新版本的chrome中,它确实支持它(我觉得很不幸)。我认为它已经存在很长时间了,有太多的页面依赖它。请参阅我答案下面的讨论:至少在最新版本的chrome中,它确实支持它(我觉得很不幸).我想它已经存在很长时间了,依赖它的页面太多了。
$('#mesa').on('click', gotoSection);
<div id=mesaOpener> ... </div>
<div id=anotherDivOpener> ... </div>
<div id=mesa> ... </div>
<div id=anotherDiv> ... </div>
<script type="text/javascript">
$(function(){
$('[id$=Opener]').on('click', function(){
$('#section_container div' ).hide();
$('#'+this.id.slice(0,4)).show();
});
});
</script>