【问题标题】:Unable to create a variable in javascript无法在 javascript 中创建变量
【发布时间】:2013-03-01 21:22:11
【问题描述】:

我正在创建一个应用程序,它会在扫描条形码时告诉您产品的价格。基本上,当条形码被扫描时,它会进入文本字段,然后根据它是哪个条形码,textarea 将通过 javascript 将价格放入其中。我已经让它工作了,但我似乎无法创建某个变量来避免我以后查看大量代码。

这是我的 javascript:

function showPrice() {
    var userInput = document.getElementById('barcode').value;
    var price = document.getElementById('textarea').innerHTML;
    if (userInput === "783466209834") {
        price = "16.99";
    } else {
        price = "Not a valid barcode";
    }
}

这是我的 HTML:

<input type="text" name="text" class="textinput" id="barcode">
<input type="button" onclick="showPrice()" value="Submit">
<textarea name="" cols="" rows="" readonly="readonly" id="textarea"></textarea>

现在,我的代码不起作用,但如果我删除

var price = document.getElementById('textarea').innerHTML;  

并分别替换 if 语句中的“price”,然后它就可以工作了。我不知道为什么我不能创建这个价格变量。

【问题讨论】:

    标签: javascript variables if-statement textarea getelementbyid


    【解决方案1】:

    因为您将innerHTML 存储为变量,而不是存储对它的引用

    将其更改为 var textarea = document.getElementById('textarea'); 然后 textarea.innerHTML = "16.99" 等等。

    【讨论】:

    • 非常感谢。我认为这是我缺少的一些东西,但是我可以在变量中有一个 .value 而不是 .innerHTML 似乎有点奇怪
    • 不,您可以在变量中包含innerHTML。它只是innerHTML 的内容,而不是对属性映射的引用。
    • 哦,好的。这更有意义。再次感谢!
    【解决方案2】:

    如果你想使用 textarea 的值,你需要访问document.getElementById('textarea').value,而不是innerHTML

    而且,是的,正如其他人指出的那样,您希望将变量设置为引用元素,而不是值。然后您可以检索或设置元素的值。

    【讨论】:

      【解决方案3】:

      您正在获取textarea 的内部HTML,并将其存储在变量price 中。相反,您只需将元素存储在变量中,然后调用price.innerHTML 将结果放入 DOM。像这样:

      function showPrice() {
          var userInput = document.getElementById('barcode').value;
          var price = document.getElementById('textarea');
          if (userInput === "783466209834") {
              price.innerHTML = "16.99";
          } else {
              price.innerHTML = "Not a valid barcode";
          }
      }
      

      编辑:正如 talemyn 正确指出的那样,您应该使用 .value 而不是 .innerHTML 来更改 textareas 的内容。虽然它看起来可能做同样的事情,但使用 .innerHTML 会带来一些轻微的缺点。

      【讨论】:

        【解决方案4】:

        您不应该为price 赋值然后覆盖它...这就是您的代码正在做的事情。我相信你认为你是在 innerHTML 中创建一个存储位置?

        相反,只需创建变量:

        var price;
        

        像以前一样运行代码;然后将结果放入页面中

        document.getElementById("text area").innerHTML = price;
        

        【讨论】:

          【解决方案5】:

          您使用两个不同的东西设置了两次“价格”变量。你实际上并没有改变 DOM。而是使用:

          var price = document.getElementById('textarea');
          if (userInput === "783466209834") {
              price.innerHTML = "16.99";
          } else {
              price.innerHTML = "Not a valid barcode";
          }
          

          【讨论】:

            猜你喜欢
            • 2015-02-09
            • 2017-11-22
            • 2021-04-22
            • 2017-12-17
            • 1970-01-01
            • 1970-01-01
            • 2022-12-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多