我可以重置文本输入而不清除它吗?

时间:2016-04-06 05:57:47

标签: javascript forms variables if-statement input

首先,谢谢大家对我之前的问题的帮助。我让我的代码完全按照我的意愿完成了你的帮助。但现在它也在做一些我不想做的事情。

function raceMod() {
  var race = document.getElementById("race").value;
  var str = document.getElementById("strScore").value;

  if (race == "orc") {
    var orc = {
      str: 4,
      dex: 0,
      con: 0,
      int: -2,
      wis: -2,
      cha: -2
    }
    document.getElementById("strScore").value = (parseInt(str) + parseInt(orc.str))

  } else if (race == "ore") {
    var ore = {
      str: 2,
      dex: 0,
      con: 0,
      int: 0,
      wis: 2,
      cha: -2
    };
    document.getElementById("strScore").value = (parseInt(str) + parseInt(ore.str))

    }
}

这是我的javascript。我有一个可供选择的潜在比赛的下拉菜单。根据所选择的种族,创建了影响与该变量对应的文本输入的不同变量。

现在,用户在文本输入中输入一个数字,然后选择一个种族。根据所选的比赛,在用户已输入的数字中添加或减去修饰符。

我遇到的问题是即使已经修改了脚本,脚本也会继续添加到输入中。

例如,如果用户在输入中键入“10”并选择Orc,则10变为14.但是如果他选择了Oread(“ore”),则输入变为16.我需要更改从本质上讲,我需要javascript忽略新数字,只将变量添加到原始输入。

有没有这样做?

1 个答案:

答案 0 :(得分:0)

您可以做的是捕获strScore输入中用户的输入,并保存该值。

race更改时重新计算得分时,请使用用户输入的值,而不是strScore输入中的值。由于更改strScorerace值会不断变化。

这里是代码摘要(不完整,请参阅小提琴)

// the score the user filled in, defaults null
var userScore = 0;

// when the user inputs a score, save it
score.addEventListener('input', function(e) {
    userScore = e.target.value;
});

function raceMod() {
        // we only need the race value here
    var race = raceSelector.value;

    if (race == "orc") {
        var orc = {
            str: 4,
            dex: 0,
            con: 0,
            int: -2,
            wis: -2,
            cha: -2
        };

        // this is edited
        // use the value of `userScore`, not the value from the input
        score.value = (parseInt(userScore, 10) + parseInt(orc.str, 10));


    } else if (race == "ore") {
        var ore = {
            str: 2,
            dex: 0,
            con: 0,
            int: 0,
            wis: 2,
            cha: -2
        };

        // same as above
        score.value = (parseInt(userScore, 10) + parseInt(ore.str, 10));
    }
}

小提琴:https://jsfiddle.net/pn8nm9js/2/