Javascript循环用于相同的命令

时间:2017-04-01 21:44:37

标签: javascript

我试图弄清楚如何循环这个而不是6个单独的版本。这显然是多余的代码。我在PHP中没有问题。

我想保留这个纯粹的JS。

    function p1Name() {
    document.getElementById('p1_name_1').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_2').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_3').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_4').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_5').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_6').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    document.getElementById('p1_name_7').innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
} 

同样的功能重复6次。 p1,p2,p3,p4,p5,p6

2 个答案:

答案 0 :(得分:1)

您只需要构建元素的名称(p(x)_name_(i))。由于您要调用该函数6次(对于p1...p6),您应该将其作为参数(px)传递给函数:

function pName(px) {
    for (var i = 1; i <= 7; i++) {
        document.getElementById(px + '_name_' + i).innerHTML = (scorecard.p1[scorecard.p1.selectedIndex].text);
    }
}

然后,您将为每个p1...p6调用此函数(根据您的情况,您可能也希望在循环中执行此操作)。我将把那个留给你,因为你可以使用与上述函数中相同的概念。

答案 1 :(得分:1)

Keiwan解决了这个问题...这个函数仍然需要多次调用...你可以访问记录卡[“p1”]等对象属性,例如scorecard.p1。所以,只打电话一次。

function pName(px) {
  for (var i = 1; i <= 7; i++) {
    document.getElementById(px + '_name_' + i).innerHTML = (scorecard[px][scorecard[px].selectedIndex].text);
  }
}

提供的是px以字符串形式输入。