一些javascript代码不工作-事件处理程序'onclick'中的if()语句

some javascript code doesn't working - if() sentence in event-handler 'onclick'

本文关键字:中的 onclick if 语句 javascript 代码 工作 事件处理 程序 一些      更新时间:2023-09-26
var head = document.getElementById('head');
var navMain = document.getElementById('navMain');
var navLinks = document.getElementsByClassName('navLink');
var floatEnder_1 = document.getElementById('floatEnder_1');
var iMainContents = document.querySelector('iframe#iMainContents');

// function change class of #head    
    function changeHeadClass(from, to) {
    if(head.className === from) {head.className = to;}
};
// event : click #navMain
    navMain.onclick = function(){
        changeHeadClass('head','head_small');
        floatEnder_1.style.display = 'none';
        if(iMainContents.style.display == 'none') {
           iMainContents.style.display = 'initial'; 
           };
    }

请注意以上代码。我试图做不引人注目的js编码,但它比在html中插入js事件代码更困难。

当你看到上面的代码时,大多数代码都工作得很好。但只有一句话,if(iMain...)不工作。我看了"javascript定义指南5"和浏览器控制台报告,但找不到问题的原因…

http://jsfiddle.net/40ee6ady/

我在上面写了代码。

您可以使用iMainContents.offsetParent === nullwindow.getComputedStyle(element)

if(iMainContents.offsetParent === null) {
    iMainContents.style.display = 'initial';
}

if(window.getComputedStyle(iMainContents).display == 'none') {
    iMainContents.style.display = 'initial';
}

演示

第一个选项在性能方面要比第二个选项好得多

没有人知道问题的原因。

所以我绕道使用jquery的'show()'函数。

下面的

是代码

$(iMainContents).show();

我想你已经解决了这个问题。

<script>
    window.onload = function() {
        var head = document.getElementById('head');
        var navMain = document.getElementById('navMain');
        var iMainContents = document.querySelector('iframe#iMainContents');
        function changeHeadClass(from, to) {
            if(head.className === from) {
                head.className = to;
            }
        };
        navMain.onclick = function(){
            changeHeadClass('head','head_small');
            if(iMainContents.style.display === '') {
                iMainContents.style.display = 'initial';
            };
        }
    }
</script>

将代码改为

   if(iMainContents.style.display == '') {
          iMainContents.style.display = 'initial'; 
   };

因为display =nonestyle.display中会显示"。