Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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_Refactoring - Fatal编程技术网

重构javascript';对于';环

重构javascript';对于';环,javascript,for-loop,refactoring,Javascript,For Loop,Refactoring,我正在练习javascript。我创建了一个链接来显示隐藏段落。代码当前使用2个“for”循环。我是否应该为“for”循环创建一个函数,然后重新使用该函数 var paragraphs = document.getElementsByTagName('p'), firstParagraph = paragraphs[0], link = document.createElement('a'); link.innerHTML = 'Show more'; link.setAttri

我正在练习javascript。我创建了一个链接来显示隐藏段落。代码当前使用2个“for”循环。我是否应该为“for”循环创建一个函数,然后重新使用该函数

var paragraphs = document.getElementsByTagName('p'),
    firstParagraph = paragraphs[0],
    link = document.createElement('a');
link.innerHTML = 'Show more';
link.setAttribute('class', 'link');
link.setAttribute('href', '#');
firstParagraph.appendChild(link);

for (var i = 1; i <= paragraphs.length - 1; i++) {
    paragraphs[i].classList.add('hide')
}

function toggleHide(e) {
    e.preventDefault;
    var paragraphs = document.getElementsByTagName('p');
    for (i = 1; i <= paragraphs.length - 1; i++) {
        paragraphs[i].classList.toggle('hide');
    }
}

link.addEventListener('click', toggleHide)
var段落=document.getElementsByTagName('p'),
第一段=第[0]段,
link=document.createElement('a');
link.innerHTML='显示更多';
setAttribute('class','link');
link.setAttribute('href','#');
第一段.附加儿童(链接);
对于(var i=1;i,由于toggle('hide')在初始化段落列表时也会执行add('hide')的相同操作,因此最好将重复代码拉到单个函数中

例如:

var paragraphs = document.getElementsByTagName('p'),
firstParagraph = paragraphs[0],
link = document.createElement('a');
link.innerHTML = 'Show more';
link.setAttribute('class' , 'link');
link.setAttribute('href' , '#');
firstParagraph.appendChild(link);
toggleHideAll();

function toggleHide( e ){
    e.preventDefault;
    var paragraphs = document.getElementsByTagName('p');
    toggleHideAll();
}

function toggleHideAll(){
    for( i = 1 ; i <= paragraphs.length-1 ; i++){
        paragraphs[i].classList.toggle('hide');
    }  
}

link.addEventListener( 'click' , toggleHide) 
var段落=document.getElementsByTagName('p'),
第一段=第[0]段,
link=document.createElement('a');
link.innerHTML='显示更多';
setAttribute('class','link');
link.setAttribute('href','#');
第一段.附加儿童(链接);
toggleHideAll();
函数切换隐藏(e){
e、 防止违约;
var段落=document.getElementsByTagName('p');
toggleHideAll();
}
函数toggleHideAll(){
对于(i=1;i由于toggle('hide')在初始化段落列表时也会执行add('hide')的相同操作,因此最好将重复代码拉到单个函数中

例如:

var paragraphs = document.getElementsByTagName('p'),
firstParagraph = paragraphs[0],
link = document.createElement('a');
link.innerHTML = 'Show more';
link.setAttribute('class' , 'link');
link.setAttribute('href' , '#');
firstParagraph.appendChild(link);
toggleHideAll();

function toggleHide( e ){
    e.preventDefault;
    var paragraphs = document.getElementsByTagName('p');
    toggleHideAll();
}

function toggleHideAll(){
    for( i = 1 ; i <= paragraphs.length-1 ; i++){
        paragraphs[i].classList.toggle('hide');
    }  
}

link.addEventListener( 'click' , toggleHide) 
var段落=document.getElementsByTagName('p'),
第一段=第[0]段,
link=document.createElement('a');
link.innerHTML='显示更多';
setAttribute('class','link');
link.setAttribute('href','#');
第一段.附加儿童(链接);
toggleHideAll();
函数切换隐藏(e){
e、 防止违约;
var段落=document.getElementsByTagName('p');
toggleHideAll();
}
函数toggleHideAll(){

对于(i=1;iYes),实现两端的单个循环是很好的,正如@Solmon所说:

function toggleHideAll(){
    for (var i = 1; i <= paragraphs.length-1; i++) {
        paragraphs[i].classList.toggle('hide');
    }  
}

是的,用一个循环来实现两个目的是很好的,正如@Solmon所说:

function toggleHideAll(){
    for (var i = 1; i <= paragraphs.length-1; i++) {
        paragraphs[i].classList.toggle('hide');
    }  
}

在什么情况下值得,这是一个意见问题,特别是因为在这种情况下,它们做的事情略有不同。不是意见问题(我不认为)是您应该以可读的方式格式化和缩进代码。:-)这是一个意见的问题,在什么时候它变得值得,特别是因为在这种情况下,他们做的事情略有不同。不是意见的问题(我不认为)是你应该格式化和缩进你的代码可读:-)非常感谢解释和你的时间。非常感谢解释和你的时间。
function toggleHideAll() {
    paragraphs.forEach(p => p.classList.toggle('hide'));
    paragraphs[0].classList.remove('hide');
}