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 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制