zhongguolong208 2014-05-08 10:53 采纳率: 0%
浏览 847

关于javaScript中变量的问题,本人初学的菜鸟,希望哪位高手帮忙解答,感激不尽!!!

  1. List item

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



复选商品计算价格 var goodsNode = document.getElementsByName("goods");//获取所有商品的对象 var allNode = document.getElementsByName("all")[0];// **为什么我这样定义,selectAll()就失去作用了呢? 这不是全局变量吗??** var text = document.getElementsByName("text");// **在这定义 为什么不能调用呢??** function selectAll(){ //var allNode = document.getElementsByName("all")[0];//获取全选框的对象 for(var i = 0;i<goodsNode.length;i++){ goodsNode[i].checked=allNode.checked; } } function clearAll(){ //var text = document.getElementById("text");//获取价格显示框的对象 for(var i = 0;i<goodsNode.length;i++){ goodsNode[i].checked=false; } text.innerHTML=""; } function getSum(){ var sum =0; for (var i=0;i<goodsNode.length;i++){ if(goodsNode[i].checked){ sum = sum+parseInt(goodsNode[i].value); } } //var text = document.getElementById("text");//获取价格显示框的对象 text.style.color = "#FF0000"; text.innerHTML = "总价格是:"+sum+"元"; alert("总价格是:"+sum+"元"); }


全选

笔记本2000元

空调3000元

手机2000元

日立DVD400元

洗衣机3000元

西门子冰箱4000元



  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-09 18:43
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (文心一言专栏,V2.5.2版本,2023.12.09)


    该回答引用文心大模型3.5,仅提供参考,不保证完全正确
    看起来你在JavaScript中遇到了一些问题,特别是与变量作用域和DOM操作相关的问题。以下是我对你问题的分析:

    1. selectAll()函数中allNode变量的问题:
      在你的代码中,你已经在全局作用域中定义了allNode变量,所以在selectAll()函数中应该可以直接使用,不需要重新声明。问题可能在于你在调用selectAll()函数时,allNode是否已经正确的被赋值。你需要检查HTML中的name为"all"的元素是否存在,以及它是否在你调用selectAll()函数之前被正确获取。
    2. text变量在getSum()函数中不能调用的问题:
      同样,你在全局作用域中定义了text变量,所以在getSum()函数中应该可以直接使用。但这里可能存在两个问题。首先,你获取的text元素可能不存在或者没有正确获取。其次,你在使用text.innerHTMLtext.style.color时,必须确保text变量确实引用了一个DOM元素,而不是一个NodeList。如果你的HTML中有多个name为"text"的元素,那么document.getElementsByName("text")将返回一个NodeList,你需要通过索引来访问具体的元素,例如text[0]

    下面是我对你的代码的一些修改建议:

    <!DOCTYPE html>
    <html>
    <head>
        <title>复选商品计算价格</title>
    </head>
    <body>
        <input type="checkbox" id="all" onclick="selectAll()"/>全选<br/>
        <input type="checkbox" class="goods" value="2000"/>笔记本2000元<br/>
        <input type="checkbox" class="goods" value="3000"/>空调3000元<br/>
        <input type="checkbox" class="goods" value="2000"/>手机2000元<br/>
        <input type="checkbox" class="goods" value="400"/>日立DVD400元<br/>
        <input type="checkbox" class="goods" value="3000"/>洗衣机3000元<br/>
        <input type="checkbox" class="goods" value="4000"/>西门子冰箱4000元<br/>
        <p id="text">总价格是: 0 元</p>
        <button onclick="getSum()">计算总价</button>
        <button onclick="clearAll()">清空选择</button>
    
        <script>
            var goodsNode = document.getElementsByClassName("goods"); // 使用class获取商品对象
            var allNode = document.getElementById("all"); // 使用id获取全选框对象
            var text = document.getElementById("text"); // 使用id获取价格显示框对象
            
            function selectAll() {
                for (var i = 0; i < goodsNode.length; i++) {
                    goodsNode[i].checked = allNode.checked;
                }
            }
            
            function clearAll() {
                for (var i = 0; i < goodsNode.length; i++) {
                    goodsNode[i].checked = false;
                }
                text.innerHTML = "总价格是: 0 元";
            }
            
            function getSum() {
                var sum = 0;
                for (var i = 0; i < goodsNode.length; i++) {
                    if (goodsNode[i].checked) {
                        sum = sum + parseInt(goodsNode[i].value);
                    }
                }
                text.style.color = "#FF0000";
                text.innerHTML = "总价格是: " + sum + " 元";
            }
        </script>
    </body>
    </html>
    

    这段代码应该能解决你的问题。我建议你阅读一些关于JavaScript变量作用域和DOM操作的基础知识,这样你就能更好地理解这段代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?