Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript";onclick";事件仅在Chrome中失败_Javascript_Jquery_Onclick - Fatal编程技术网

javascript";onclick";事件仅在Chrome中失败

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]”,

我正在更正一个有错误的网页,我检测到它在哪里,但我不知道它的基础

这个js在Firefox和explorer中工作得很好,但在Chrome中却不行

那么,我们开始吧:

--HTML--


--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>