2011-04-19 21 views
0

我正在使用JavaScript,但我认为这个想法适用于所有语言。这个想法是,如果你有4个数字中的1个,你可以得到其他数字。像这样:从一个数字得到一组数字的数学方法

1 = 234 
2 = 134 
3 = 124 
4 = 123 

如果你有1你输出234,等等什么是最有效的方法来做到这一点?你必须使用数组,循环?

类似:

var fruits = ["#apple", "#orange", "#peach"]; 
for (i = 0; i <= fruits.length-1; i++) { 
    $(fruits[i]).show; 
    $(fruits[WANT TO BE not i]).hide;//on loop would want to be other number besides i 
    $(fruits[WANT TO BE not i]).hide;//on loop would want to be other number besides i 
} 
+0

我认为你所寻找的是一个'地图',作为一个关联数组实现 – ianace 2011-04-19 02:34:56

+2

为什么不把所有的DOM元素都粘在一个特定的类中,隐藏所有这些元素,然后只显示你想要的那个? – 2011-04-19 02:35:03

回答

1

我真的认为这是矫枉过正,但如果你需要做到这一点与使用情况下,我无法想象,你总是可以做到这一点(使用您的水果为例):

var fruits = ["#apple", "#orange", "#peach"]; 

function showOne(n) 
{ 
    for(i = 0; i < fruits.length; ++i) 
    { 
     if(n != i) 
     { 
      $(fruits[i]).hide(); 
     } 
     else 
     { 
      $(fruits[i]).show(); 
     } 
    } 
} 

$(document).ready(function(){ 
    showOne(2); 
}); 

Fiddle here

编辑:

基于查看源(1和2是有几件事情只是我自己的看法:)):

  1. 没有问题,我会打破所有那些为个别网页。不仅他们不合逻辑地属于一起,而且我会讨厌看到最终的结果代码(可怕的膨胀)。
  2. 除了分割页面之外,我还将在后端而非客户端使用大部分功能。
  3. 如果你在做这一切的客户端设置,那么其实我完全改变你有逻辑:

HTML:

<a onclick="nav('slides'); return false;" href="#slides">Edit Slides</a> 
<a onclick="nav('pages'); return false;" href="#pages">Edit Pages</a> 
<a onclick="nav('projects'); return false;" href="#projects">Edit Projects</a> 

脚本:

function nav(panel) 
{ 
    $('.section').hide(); 
    $(panel).show(); 
} 

KISS。没有理由过于复杂的东西:)

+0

谢谢,但我试图避免使用函数/参数。 – ThomasReggi 2011-04-19 03:19:12

+0

为什么你会想要这样做?......当然,除了*想*有意大利面代码乱丢你的项目.. – 2011-04-19 04:28:22

+0

在这里http://dev.reggi.com/so/dashboard检查出源 – ThomasReggi 2011-04-19 04:41:40

2

我不知道效率,但既然你已经使用jQuery,为什么不这样做:

<div id="apple" class="fruit">...</div> 
<div id="orange" class="fruit">...</div> 
<div id="peach" class="fruit">...</div> 

$('.fruit').click(function() { 
    $('.fruit').hide(); 
    $(this).show(); 
}); 

编辑:

如果我正确地确定了您的需求,您希望每次用户在编辑幻灯片上单击2时显示幻灯片2。

在这种情况下,您可以将ID和类要显示,像这样的幻灯片:

<div id="slide_1" class="slide"><img src="1.jpg" /></div> 
<div id="slide_2" class="slide"><img src="2.jpg" /></div> 
<div id="slide_3" class="slide"><img src="3.jpg" /></div> 

,并添加相对你一个

<ul class="navigationList"> 
    <li><a href="#" rel="slide_1">1</a></li> 
    <li><a href="#" rel="slide_2">2</a></li> 
    <li><a href="#" rel="slide_3">3</a></li> 
</ul> 

现在的javascript:

$('ul.navigationList li a').click(function(e) { 
    e.preventDefault(); 
    var slideId = $(this).attr('rel'); 
    $('.slide').hide(); 
    $('#' + slideId).show(); 
    return false; 
}); 

再次,这只是其中的一种方法。

+0

我的按钮与我正在隐藏和显示的按钮不同。 – ThomasReggi 2011-04-19 02:37:53

+0

我只是给你一个关于如何实现你想要的一般想法,如果你想要一个特定的HTML/JS答案,然后张贴你的HTML以及 – 2011-04-19 02:39:38

+0

http://dev.reggi.com/so/dashboard/ – ThomasReggi 2011-04-19 02:58:26