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'和浏览器的控制台报告,但找不到问题的原因......
我在那里写了我的代码。
答案 0 :(得分:0)
您可以使用iMainContents.offsetParent === null
或window.getComputedStyle(element)
,
if(iMainContents.offsetParent === null) {
iMainContents.style.display = 'initial';
}
或者
if(window.getComputedStyle(iMainContents).display == 'none') {
iMainContents.style.display = 'initial';
}
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
中显示''。