首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过在一个公共中组合3个重复函数并使用参数将其应用于其他事物来减少我的JS代码?

如何通过在一个公共中组合3个重复函数并使用参数将其应用于其他事物来减少我的JS代码?
EN

Stack Overflow用户
提问于 2019-06-11 06:02:06
回答 1查看 0关注 0票数 0

我想减少我的代码,因为那里有太多的重复功能。等待你的建议。

我已经尝试创建一个函数,然后编辑将其应用于其他只是更改参数的东西。这个功能只需点击即可完成,但事实并非如此。

var rock = document.getElementById('rock');
var paper = document.getElementById('paper');
var scissors = document.getElementById('scissors');
rock.addEventListener('click', function() {
    // setting two images
    img1.setAttribute('src', 'img/rock.png');
    var number = Math.ceil(Math.random() * 3);
    if (number == 1) {
        img2.setAttribute('src', 'img/rock.png');
    } else if (number == 2) {
        img2.setAttribute('src', 'img/paper.png');
    } else if (number == 3) {
        img2.setAttribute('src', 'img/scissors.png');
    }
    // analyzing
    if (img1.src == img2.src && img1.src != 'file:///C:/Users/mi/Desktop/Rock,%20paper,%20scissors/img/unphoto.png') {
        winnerTextview.innerHTML = 'Ничья';
        points++;
        pointsTextview.innerHTML = 'очки: ' + points;
        draws++;
    }
    if (img2.src == 'file:///C:/Users/mi/Desktop/Rock,%20paper,%20scissors/img/paper.png') {
        winnerTextview.innerHTML = 'Вы проиграли';
        loses++;
    }
    if (img2.src == 'file:///C:/Users/mi/Desktop/Rock,%20paper,%20scissors/img/scissors.png') {
        winnerTextview.innerHTML = 'Вы выиграли';
        points += 3;
        pointsTextview.innerHTML = 'очки: ' + points;
        wins++;
    }
    matches++;
    // result
    if (matches == 8) {
        document.getElementById('result').style.display = 'flex';
        $('html, body').stop().animate( {scrollTop: $('#result').offset().top}, 777 );
        if (points >= 15) {
            document.getElementById('result_winner').innerHTML = 'Поздравляю, вы выиграли робота!';
            document.getElementById('result_image').setAttribute('src', 'img/goblet.png');
        } else if (points < 15) {
            document.getElementById('result_winner').innerHTML = 'Лошпендус, вы проиграли роботу!';
            document.getElementById('result_image').setAttribute('src', 'img/poop.png');
        }
        document.getElementById('wins').innerHTML = 'Побед: ' + wins + ' (' + (wins / 8 * 100).toFixed(1) + '% от всех матчей)';
        document.getElementById('loses').innerHTML = 'Проигрышей: ' + loses + ' (' + (loses / 8 * 100).toFixed(1) + '%)';
        document.getElementById('draws').innerHTML = 'Ничьих: ' + draws + ' (' + (draws / 8 * 100).toFixed(1) + '%)';
        document.getElementById('all_points').innerHTML = 'Всего очков: ' + points + ' (' + (points / 24 * 100).toFixed(1) + '% от макс. кол-ва очков)';
    }
})

// this just repeating 3 times: with rock, paper and scissors
// the end of the code

我希望有一个功能,并将它应用于我的三件事:摇滚,纸张,剪刀,只是表明一些功能参数。我还希望这些函数将通过单击而不是通过窗口重新加载来执行。如果你做不到,那就建议你的变种。提前致谢!**

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 15:11:45

我会把你所拥有的所有代码都rock.addEventListener移到一个单独的函数中,这将需要一个数字og一个字符串作为参数。通过这种方式,您可以随意提供所点击的任何类型,并且不会产生重复的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档