一些javascript代码不起作用 - 在事件处理程序中的if()句子' onclick'

时间:2014-08-12 05:03:44

标签: javascript html css

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 definition guide 5th'和浏览器的控制台报告,但找不到问题的原因......

http://jsfiddle.net/40ee6ady/

我在那里写了我的代码。

4 个答案:

答案 0 :(得分:0)

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

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

或者

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

Demo

First one is much more better that the second option in performance manner

答案 1 :(得分:0)

没有人知道问题的原因。

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

下面是代码。

$(iMainContents).show();

答案 2 :(得分:0)

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

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

答案 3 :(得分:-1)

将代码更改为

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

因为display =none会在style.display中显示''。