0

我正在纠正一个有错误的网页,我检测到它在哪里,但我不知道其依据。

这个 js 在 Firefox 和资源管理器中完美运行,但在 Chrome 中却不行。

所以,我们开始:

--HTML--

<div id='mesa' onclick='gotoSection( mesa  )' >

--JAVASCRIPT--

<script type="text/javascript"> 
    function gotoSection( section ){
        alert( section );
        $( '#section_container div' ).css( "display" , "none" );
        $( section ).css( "display" , "block" );
    }
</script>

--

因此,在 Firefox 中,警报显示为“[object HTMLDivElement]”,但在 Chrome 中,警报显示为“未定义”。

4

4 回答 4

3

改变

<div id='mesa' onclick='gotoSection( mesa  )' >

<div id='mesa' onclick='gotoSection( this  )' >

请注意,当使用 jQuery 时,这会更惯用(它需要在执行这行代码之前定义元素):

$('#mesa').on('click', gotoSection);

编辑 :

根据您的评论,现在很明显您的错误是您为多个元素提供了相同的 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>

单击<somename>Opener显示 div <somename>

于 2013-07-15T08:14:58.727 回答
0

尝试

<div id='mesa' onclick='gotoSection( "#mesa" )' >

于 2013-07-15T08:15:30.590 回答
0

不应该是台面字符串吗?我的意思是 onclick='gotoSection("mesa")'

于 2013-07-15T08:16:09.373 回答
0

$(section) - 部分可以是字符串(id 选择器)或有效的 dom 对象。IE 和 Firefox 有一个有趣的怪癖:您可以直接使用 id 作为对 dom 对象的 js 引用,而无需显式 getElementById - 例如。mesa 这里指的是 div 对象。

Chrome/Safari 不支持这个。

于 2013-07-15T08:34:51.897 回答