减少Javascript函数长度

时间:2014-04-10 13:59:24

标签: javascript for-loop

我有一个看起来像这样的javascript函数:

function myfun(){
//product.1
var t1=document.getElementById('1').innerHTML;
var link = document.getElementsByClassName(t1);

if(document.getElementsByClassName(t1).length==1){
document.getElementById(t1).innerHTML=link[0].outerHTML;
document.getElementById(t1).getElementsByTagName('a')[0].className='dsad';

}
if(document.getElementsByClassName(t1).length==2){
document.getElementById(t1).innerHTML=link[0].outerHTML+'; '+link[1].outerHTML;
var element = document.getElementById(t1).getElementsByTagName('a')[0].className='dsad';
var element2 = document.getElementById(t1).getElementsByTagName('a')[1].className='dsad';
}...
//product.2
var t2=document.getElementById('2').innerHTML;

直到if(document.getElementsByClassName(t1).length==10)然后它继续元素 - document.getElementById('2'),依此类推,直到它到达元素编号10。整个脚本大约有700行,我想以某种方式减少它。我在想一个for循环,但我不知道如何实现这个。有什么建议吗?

4 个答案:

答案 0 :(得分:5)

尝试:

for( i = 1; i <= 10; i++ ){  
  if( document.getElementsByClassName( t1 ).length == i ){
    document.getElementById( t1 ).innerHTML=link[i-1].outerHTML;
    document.getElementById( t1 ).getElementsByTagName( 'a' )[ i-1 ].className = 'dsad';
  }
}

修改

如果你想要增加元素id,你应该尝试:

for( i = 1; i <= 10; i++ ){  

var t1=document.getElementById(''+i).innerHTML;
var link = document.getElementsByClassName(t1);

      if( document.getElementsByClassName( t1 ).length == i ){
        document.getElementById( t1 ).innerHTML=link[i-1].outerHTML;
        document.getElementById( t1 ).getElementsByTagName( 'a' )[ i-1 ].className = 'dsad';
      }
    }

答案 1 :(得分:3)

你可以试试这个:

for(var id=1;id<=10;id++){
    var t1id=""+id;
    var t1=document.getElementById(t1id).innerHTML;
    var link = document.getElementsByClassName(t1);
    for(var num=1;num<=10;num++){
        if(document.getElementsByClassName(t1).length==num){
             document.getElementById(t1).innerHTML=link[0].outerHTML;
             document.getElementById(t1).getElementsByTagName('a')[0].className='dsad';
        }
    }
}

答案 2 :(得分:3)

function myfun(){
    for(i=1;i<=10;i++){
        var ti=document.getElementById(i).innerHTML;
        var link = document.getElementsByClassName("t" + i);

        if(link.length==1){
             link.innerHTML=link[0].outerHTML;
             ti.getElementsByTagName('a')[i - 1].className='dsad';

        }
        else if(link.length==2){
            ti.innerHTML=link[i - 1].outerHTML+'; '+link[i].outerHTML;
            var element = ti.getElementsByTagName('a')[i - 1].className='dsad';
            var element2 = ti.getElementsByTagName('a')[i].className='dsad';
        }
     }
}

答案 3 :(得分:2)

我不确定您的代码的一部分。所以我假设这取决于id。

我要做的第一件事是创建一个javascript对象,其中包含您要为className包含的内容

var classNameDictionary = { 0 : 'dsad', 1 :'dsad, ...};

一旦你有了这个,那么我将实现一个for循环如下:

function myFun(numElements){
    for(var i = 0; i < numElements; i++) {
        var t = document.getElementById(''+i).innerHTML;
        var link = document.getElementsByClassName(t);
        document.getElementById(t).innerHTML = "";
        for(var j = 0; j < link.length; j++) {
            document.getElementById(t).innerHTML +=link[j].outerHTML;
            var element = document.getElementById(t).getElementsByTagName('a')[j].className = classNameDictionary[j];
        }

    }
}

我希望它有所帮助