【问题标题】:alert a variable value警告变量值
【发布时间】:2010-06-06 06:04:47
【问题描述】:

如何在警告框中显示 javascript 中变量的值?

例如,我有一个变量 x=100,而 alert(x) 不起作用。

油脂猴使用的脚本在这里

var inputs = document.getElementsByTagName('input');

var new;
for (i=0; i<inputs.length; i++) {
  if (inputs[i].getAttribute("name") == "ans") {   
new=inputs[i].getAttribute("value"));

alert(new)

  }
}

【问题讨论】:

  • 向我们展示你做了什么,包括 html。
  • 您的问题缺少很多细节。
  • 离题,但我认为它可能会帮助你拿起一本关于 Javascript 的好书。我认为 Flanagan 的 Javascript: The Definitive Guide 非常好,但实际上,就 JS 书籍而言,您现在有很多选择。 :-)
  • @T.J.同意,至少像Eloquent JavaScript 这样的好向导会对他有很大帮助...+1
  • 为什么投反对票?这似乎是一个好问题...

标签: javascript greasemonkey


【解决方案1】:

请注意,虽然上述答案是正确的,但如果您愿意,您可以执行以下操作:

alert("The variable named x1 has value:  " + x1);

【讨论】:

    【解决方案2】:

    有几点:

    1. 你不能使用new作为变量名,它是一个保留字。
    2. input 元素上,您可以直接使用value 属性,不必经过getAttribute。该属性被“反映”为属性。
    3. name 也一样。

    所以:

    var inputs, input, newValue, i;
    
    inputs = document.getElementsByTagName('input');
    for (i=0; i<inputs.length; i++) {
        input = inputs[i];
        if (input.name == "ans") {   
            newValue = input.value;
            alert(newValue);
        }
    }
    

    【讨论】:

    • 您提出的第一点是正确的。但是,您确实不需要使用getAttribute 来获取值。 input.valueinput.name 工作得很好。
    • @Delan:这就是我所说的,这就是我的示例重写所做的。
    • 谢谢。问题出在新关键字上。如果有四个单选按钮,其中一个是“myvalue”变量中返回的值,我如何检查该特定值
    • @muqtar:我不完全确定我理解这个问题,但这是一个单独的问题,所以你应该单独问。 StackOverflow 与讨论网站的不同之处在于它的想法是有一个很好的隔离问题和(希望!)正确的答案。 (如果这解决了this问题,您可以勾选答案开头旁边的复选标记以接受答案。)
    • T. J. Crowder,真的很抱歉,我一定是个白痴;我把“可以”读作“不能”。哎呀!
    【解决方案3】:

    显示带有使用变量和消息的警告框

    <script>
    $(document).ready(function() {
    var total = 30 ;
    alert("your total is :"+ total +"rs");
    });
    </script>
    

    【讨论】:

      【解决方案4】:

      如果您使用的是greasemonkey,则该页面可能还没有为javascript 做好准备。您可能需要使用 window.onReady。

      var inputs;
      
      function doThisWhenReady() {
          inputs = document.getElementsByTagName('input');
      
          //Other code here...
      }
      
      window.onReady = doThisWhenReady;
      

      【讨论】:

        【解决方案5】:

        在以下示例的帮助下查看您是否可以在案例中使用文字和“$”符号。

            function doHomework(subject) {
            
              alert(\`Starting my ${subject} homework.\`);
            
            }
        
        doHomework('maths');
        

        【讨论】:

          【解决方案6】:
          var input_val=document.getElementById('my_variable');for (i=0; i<input_val.length; i++) {
          xx = input_val[i];``
          if (xx.name == "ans") {   
              new = xx.value;
              alert(new);    }}
          

          【讨论】:

            【解决方案7】:

            如果我正确理解了您的问题和代码,那么在分享我的代码/解决方案版本之前,我想先提三件事。首先,对于namevalue,您可能不应该使用getAttribute() 方法,因为它们本身就是(命名变量)inputs(在i 的给定索引处)的属性。其次,您试图提醒的变量是 JavaScript 中被指定为“保留关键字”或简称为“保留词”的少数几个术语之一。正如你在这个列表中看到的(在链接上),new 显然是 JS 中的保留字,不应该用作变量名。有关更多信息,只需 google 'JavaScript 中的保留字'。第三也是最后一点,在您的警报声明本身中,您忽略了包含分号。有时,仅此一项就足以使您的代码无法按预期运行。 [旁白:我说这不是建议,而是观察:JavaScript 几乎总是会原谅并允许有太多和/或不必要的分号,但如果/当缺少分号(任何) 必要的,必需的分号。因此,最佳实践当然是只在所有必需的点添加分号,并在所有其他情况下排除它们。但实际上,如果有疑问,添加/包含一个额外的内容可能不会对事情造成伤害,但忽略强制性的一项可能会造成伤害。一般规则是所有声明和赋值都以分号结尾(如变量赋值、警报、console.log 语句等)但大多数/所有表达式都没有(如 for 循环、while 循环、函数表达式 Just Saying.] 但是我跑题了。。

                function whenWindowIsReady() {
                    var inputs = document.getElementsByTagName('input');
                    var lengthOfInputs = inputs.length; // this is for optimization
                    for (var i = 0; i < lengthOfInputs; i++) {
                        if (inputs[i].name === "ans") {   
                            var ansIsName = inputs[i].value;
                            alert(ansIsName);
                        }
                    }
                }
            
                window.onReady = whenWindowIsReady();
            

            PS:您在条件语句中使用了双重赋值运算符,在这种情况下,它并不重要,因为您正在比较字符串,但通常我认为三重赋值运算符是可行的方法,并且更准确将检查值是否在没有类型转换的情况下等效,这对于其他比较实例可能非常重要,因此指出这一点很重要。例如, 1=="1" 和 0==false 都是真(通常你希望它们返回假,因为左边的值与右边的值不同,没有类型转换)但是1==="1" 和 0===false 正如您所期望的那样都是 false,因为三元组运算符在进行比较时不依赖类型转换。请牢记这一点,以备不时之需。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-12-06
              相关资源
              最近更新 更多