Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
减少Javascript函数长度_Javascript_For Loop - Fatal编程技术网

减少Javascript函数长度

减少Javascript函数长度,javascript,for-loop,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].oute

我有一个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循环,但我不知道如何实现它。有什么建议吗?

试试:

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';
  }
}
对于(i=1;i您可以尝试以下方法:

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';
        }
    }
}
for(var id=1;id
function myfun(){

对于(i=1;i我不确定代码的某一部分。因此,我将假设这取决于id

我要做的第一件事是创建一个javascript对象,其中包含要包含在类名中的内容

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

    }
}
函数myFun(numElements){
对于(变量i=0;i

我希望这会有所帮助

将元素的
id
属性传递给函数,然后在循环中反复调用该函数怎么样?你听说过for循环吗?我通常不链接到W3Schools,但它们用于
for循环的示例正是你想要的。除了你已经知道的之外告诉我们,了解HTML结构会很好。也许有一种简单的选择方法。顺便说一下,一旦你完成了
var link=document.getElementsByClassName(t1);
,你就可以使用变量名
link
,引用该元素,所以在下一行你可以写:
if(link.length==1){
我很困惑,您使用
t1
同时按类和id进行查找。在本例中,ElementID t1也应该increase@user986959因此,我们需要两个循环,一个嵌套在另一个循环中。一个用于id,两个用于LengthHanks,可以尝试一下。@user986959是否有多个元素携带相同的id?尝试避免这种情况。您可以I don’我对使用一个跨浏览器的js库不感兴趣,它从许多浏览器和dom特性中抽象出来,同时提供有用的附加API。您不应该需要
var t1id=“”+id;
行,但这是实际的(不尽快回答)回答者可以做一些模糊的解释吗?我认为他试图做的是找出是否只有一个或多个元素有一个类名,我认为这个函数足够清晰,可以为他/她指明正确的方向
var classNameDictionary = { 0 : 'dsad', 1 :'dsad, ...};
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];
        }

    }
}