Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reduce Javascript function length

I have a javascript function that looks like that:

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;

It goes like that till if(document.getElementsByClassName(t1).length==10) and then it continues element - document.getElementById('2') and so on until it reach Element number 10. The whole script is about 700 lines and I want to reduce it somehow. I was thinking of a for loop but I don't see how I could implement this. Any suggestions?

like image 569
user986959 Avatar asked Sep 24 '26 11:09

user986959


2 Answers

Try:

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';
  }
}

EDIT:

If you want also the element id to be increased you should try:

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';
      }
    }
like image 143
laaposto Avatar answered Sep 26 '26 01:09

laaposto


You could try this:

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';
        }
    }
}
like image 35
DankMemes Avatar answered Sep 25 '26 23:09

DankMemes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!