帮我简化这个JS代码

时间:2011-06-01 00:31:26

标签: javascript

我是JS的初学者,想要了解一种简化此代码的方法。有7个不同的div与iframe,还有7个不同的链接。我用iframe和1个链接显示了1个div。我不知道从哪里开始。任何帮助将不胜感激。

注意:代码可以满足我的需求,但我只需要简化它(html中的js代码少,js文件中代码更多)。

.js文件中的JavaScript:

function show_visibility(){
for(var i = 0,e = arguments.length;i < e;i++){
var myDiv = document.getElementById(arguments[i]).style;
myDiv.display = "block";}
}

function hide_visibility(){
for(var i = 0,e = arguments.length;i < e;i++){
var myDiv = document.getElementById(arguments[i]).style;
myDiv.display = "none";}
}
 function refFrame()    {
for(var i = 0,e = arguments.length;i < e;i++){
document.getElementById(arguments[i]).src = document.getElementById(arguments[i]).src;
}

}

要修改的Div / iframe:

<div id="r1-box">
<iframe id="frame-box1" class="work" src="youtubelink" width="720" height="405" frameborder="0"></iframe>
</div> 

执行JS的链接:

<a id="r1" href="javascript:refFrame('frame-box2','frame-box3','frame-box4','frame-box5','frame-box6','frame-box7');show_visibility('r1-box');hide_visibility('r2-box','r3-box', 'r4-box','r5-box','r6-box','r7-box');">
</a>

2 个答案:

答案 0 :(得分:2)

作为初学者,在了解更多Javascript之前,不应该开始使用jQuery。

有几种方法可以简化这一点,最直接的方法是将Javascript从链接中导入Javascript文件,或者在页面顶部:

window.onload = function() {
    document.getElementById('#r1').onclick = function() {
        refFrame('frame-box2','frame-box3','frame-box4','frame-box5','frame-box6','frame-box7');
        show_visibility('r1-box');
        hide_visibility('r2-box','r3-box', 'r4-box','r5-box','r6-box','r7-box');
    };
    // more...
};

window.onload 是一个事件,一旦页面出现 - 你猜对了 - 完成加载。有更好的方法可以做到这一点,但这是基本的。我建议你看看javascript domready?

在看了一下你的代码之后,我意识到你所有的七个链接都会做同样的事情。您可以通过使用单个函数来简单地使用它:

function refClick(id) {
    var i = 7,
    frames = [],
    boxes = [];
    while(i--) {
        if(i != id) {
            frames.push('frame-box' + i);
            boxes.push('r' + i + '-box');
        }
    }
    refFrame.apply(null, frames);
    hide_visibility.apply(null, boxes);
    show_visibility('r' + id + '-box');
}

我在这里做的是循环7次,并为 refFrame hide_visibility 函数构建一个参数数组。 id 变量告诉循环不要将该id放入数组中。 使用 .apply 方法,我可以应用数组作为参数并正常调用它。

对于您的每个链接,您可以应用以下功能

document.getElementById('#r1').onclick = function() {
    refClick(1);
};
document.getElementById('#r2').onclick = function() {
    refClick(2);
};
//.....

答案 1 :(得分:1)

你可以开始使用jQuery了。

http://jquery.com/