回显后,JavaScript代码无法与PHP一起使用

如何解决回显后,JavaScript代码无法与PHP一起使用

我的购物车页面上有此代码,在其中显示会话变量中的项目。

             <?php 
    if(empty(!$_SESSION['name'])){
        $name = $_SESSION['name'];
        $price = $_SESSION['price']; 
        $qty = $_SESSION['qty'];
        $pic = $_SESSION['pic'];
       
        for($i = 0; $i < count($name); $i++){
            echo '<div class="row list pt-2 pb-2" id="Mango">
            <img src="'.$pic[$i].'" class="product-image col-4 ">
            <div class="col">
                <div class="row mb-2">
                    <div class="col align-self-left ml-2 font-weight-bold" id="name0">'.$name[$i].'</div>
                    <div class="col align-self-right ml-2 font-weight-bold " id="eachTag0"> $ <var id="each0">'.$price[$i].'</var> ea.</div>
                </div>
                <div class="row mt-1 mb-2 border-top">
                    <div class="col-sm-6  pt-2">
                        <div class="row">
                            <div class="col ml-4"><a class="btn btn-outline-info " id="Substracting0"><i class="fa fa-minus"></i></a></div>
                            <div class="col input-group" ><input type="text" class="form-control QTY" id="Quantity0" value="'.$qty[$i].'"></div>
                            <div class="col "> <a class="btn btn-outline-info " id="Adding0"><i class="fa fa-plus"></i></a></div>
                        </div>
                    </div>
                    <div class="col-sm-6  pt-2">
                        <div class="row">
                            <div class="col-7 text-center pt-1" style="font-size:19px" id="totTag0"> $ <var  id="tot0"></var></div>
                            <div class="col ml-2"><a class="btn btn-outline-info" id="Deleting0"><i class="fa fa-close"></i> </a></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>';
    }
    }
    else {
        echo "<h2 class='text-center'>Empty cart</h2>";
    }

但是,在这个php文件的下方,我也有JavaScript代码,这些代码通过html ID在“ echo”中与上述代码的各个部分相连。

由于某种原因,JavaScript代码根本无法运行。可能是因为该代码被PHP“回显”了吗?

JS进一步下降:

<script type="text/javascript">

            CartStorage = window.localStorage;
            function cartItem  (name,unit,itemprice,quantity,picturepath){
                return {
                    name: name,unit: unit,// " ea." or "/lb"
                    itemprice: itemprice,quantity: quantity,total: function(){ return this.itemprice*this.quantity;},picturepath: picturepath,}
            }
            let cartList = [];
            cartList[0] = cartItem("Mango","ea.",1.99,"Pictures/Mango-2.jpg" );
            cartList[1] = cartItem("Apple","/lb",2.00,"Pictures/appl3.jpg");
            cartList[2] = cartItem("Peach",1.40,"Pictures/peach2.jpg");

            //LOADING PREEXISTING VALUES
            function checkvalues() {
                if (!isNaN(CartStorage.getItem("nbrItems"))) {
                    for (i = 0; i < cartList.length; i++) {
                        let IDstring = "Quantity"+i;
                        document.getElementById(IDstring).placeholder = CartStorage.getItem(IDstring);
                        cartList[i].quantity=Number(CartStorage.getItem(IDstring));
                        calSingleTotal(cartList[i].name);
                    }
                    calnbrItems();
                    calpretotal()
                    calQST();
                    calGST();
                    calTotal();
                }
            }

            checkvalues();
            document.getElementById("Adding0").addEventListener('click',()=> addplus("Mango"));
            document.getElementById("Substracting0").addEventListener('click',()=>  subminus("Mango"));
            document.getElementById("Deleting0").addEventListener('click',()=> deletefruit("Mango"));
            document.getElementById("Adding1").addEventListener('click',()=> addplus("Apple"));
            document.getElementById("Substracting1").addEventListener('click',()=>  subminus("Apple"));
            document.getElementById("Deleting1").addEventListener('click',()=> deletefruit("Apple"));
            document.getElementById("Adding2").addEventListener('click',()=> addplus("Peach"));
            document.getElementById("Substracting2").addEventListener('click',()=>  subminus("Peach"));
            document.getElementById("Deleting2").addEventListener('click',()=> deletefruit("Peach"));

            function savingQTYArray(){
                for (i = 0; i < cartList.length; i++) {
                    let IDstring = "Quantity"+i;
                    CartStorage.setItem(IDstring,document.getElementById(IDstring).placeholder);
                }
            }
            function calpretotal(){
                let pretotal1=0;
                for (i = 0; i < cartList.length; i++) {
                    pretotal1 +=cartList[i].total();
                }
                if(pretotal1.toString().length>3){
                    pretotal1 = Number(pretotal1.toFixed(3));
                }
                document.getElementById("pretotal").textContent = pretotal1;
            }
            function calnbrItems() {
                nbrItems=0;
                for (i = 0; i < cartList.length; i++) {
                    nbrItems += cartList[i].quantity;
                }
                document.getElementById("nbrItems").textContent = nbrItems;
                CartStorage.setItem("nbrItems",nbrItems);
                return nbrItems;
            }
            function calGST(){
                let pretotal1 = Number(document.getElementById("pretotal").textContent);
                let gst1 = pretotal1*0.05;
                if(gst1.toString().length>3){
                    gst1 = Number(gst1.toFixed(2));
                }
                document.getElementById("GST").textContent = gst1;
            }
            function calQST(){
                let pretotal1 = Number(document.getElementById("pretotal").textContent);
                let qst1 = pretotal1*0.09975;
                if(qst1.toString().length>3){
                    qst1 = Number(qst1.toFixed(2));
                }
                document.getElementById("QST").textContent = qst1;
            }
            function calTotal(){
                let pretotal1 = Number(document.getElementById("pretotal").textContent);
                let gst1 = Number(document.getElementById("GST").textContent);
                let qst1 = Number(document.getElementById("QST").textContent);
                let total1 = pretotal1+gst1+qst1;
                if(total1.toString().length>3){
                    total1 = Number(total1.toFixed(2));
                }
                document.getElementById("TOTAL").textContent = total1;
            }
            function addplus(fruitx) {
                let index = cartList.findIndex(cartList => cartList.name === fruitx);
                cartList[index].quantity++;
                let IDstring = "Quantity"+index;
                document.getElementById(IDstring).placeholder = cartList[index].quantity;
                CartStorage.setItem(IDstring,cartList[index].quantity.toString());
                calnbrItems();
                calpretotal();
                calSingleTotal(fruitx);
                calGST();
                calQST();
                calTotal();
            }
            function subminus(fruitx) {
                let index = cartList.findIndex(cartList => cartList.name === fruitx);
                if (cartList[index].quantity!=0) {
                    cartList[index].quantity--;
                    let IDstring = "Quantity" + index;
                    document.getElementById(IDstring).placeholder = cartList[index].quantity;
                    CartStorage.setItem(IDstring,cartList[index].quantity.toString());
                    calnbrItems();
                    calpretotal();
                    calSingleTotal(fruitx);
                    calGST();
                    calQST();
                    calTotal();
                }
            }
            function calSingleTotal(fruitx){
                let index = cartList.findIndex(cartList => cartList.name === fruitx);
                let IDstring = "tot"+index;
                let temp = cartList[index].total();
                if(temp.toString().length>3){
                    temp = Number(temp.toFixed(3));
                }
                document.getElementById(IDstring).textContent = temp;
            }
            function deletefruit(fruitx){
                let index = cartList.findIndex(cartList => cartList.name === fruitx);
                cartList[index].quantity=0;
                let IDstring = "Quantity" + index;
                document.getElementById(IDstring).placeholder = "0";
                document.getElementById(cartList[index].name).style.display="none";
                CartStorage.setItem(IDstring,"0");
                calnbrItems();
                calpretotal();
                calSingleTotal(fruitx);
                calGST();
                calQST();
                calTotal();
            }


        </script>

解决方法

您做错的一件事是您正在调用尚未在JavaScript中声明的函数。您的函数checkvalues()调用您稍后在JavaScript中声明的函数。像这样将所有函数声明移到该代码上方。

<script type="text/javascript">
        function cartItem  (name,unit,itemprice,quantity,picturepath){
            return {
                name: name,unit: unit,// " ea." or "/lb"
                itemprice: itemprice,quantity: quantity,total: function(){ return this.itemprice*this.quantity;},picturepath: picturepath,}
        }
         function checkvalues() {
            if (!isNaN(CartStorage.getItem("nbrItems"))) {
                for (i = 0; i < cartList.length; i++) {
                    let IDstring = "Quantity"+i;
                    document.getElementById(IDstring).placeholder = CartStorage.getItem(IDstring);
                    cartList[i].quantity=Number(CartStorage.getItem(IDstring));
                    calSingleTotal(cartList[i].name);
                }
                calnbrItems();
                calpretotal()
                calQST();
                calGST();
                calTotal();
            }
        }

        function savingQTYArray(){
            for (i = 0; i < cartList.length; i++) {
                let IDstring = "Quantity"+i;
                CartStorage.setItem(IDstring,document.getElementById(IDstring).placeholder);
            }
        }
        function calpretotal(){
            let pretotal1=0;
            for (i = 0; i < cartList.length; i++) {
                pretotal1 +=cartList[i].total();
            }
            if(pretotal1.toString().length>3){
                pretotal1 = Number(pretotal1.toFixed(3));
            }
            document.getElementById("pretotal").textContent = pretotal1;
        }
        function calnbrItems() {
            nbrItems=0;
            for (i = 0; i < cartList.length; i++) {
                nbrItems += cartList[i].quantity;
            }
            document.getElementById("nbrItems").textContent = nbrItems;
            CartStorage.setItem("nbrItems",nbrItems);
            return nbrItems;
        }
        function calGST(){
            let pretotal1 = Number(document.getElementById("pretotal").textContent);
            let gst1 = pretotal1*0.05;
            if(gst1.toString().length>3){
                gst1 = Number(gst1.toFixed(2));
            }
            document.getElementById("GST").textContent = gst1;
        }
        function calQST(){
            let pretotal1 = Number(document.getElementById("pretotal").textContent);
            let qst1 = pretotal1*0.09975;
            if(qst1.toString().length>3){
                qst1 = Number(qst1.toFixed(2));
            }
            document.getElementById("QST").textContent = qst1;
        }
        function calTotal(){
            let pretotal1 = Number(document.getElementById("pretotal").textContent);
            let gst1 = Number(document.getElementById("GST").textContent);
            let qst1 = Number(document.getElementById("QST").textContent);
            let total1 = pretotal1+gst1+qst1;
            if(total1.toString().length>3){
                total1 = Number(total1.toFixed(2));
            }
            document.getElementById("TOTAL").textContent = total1;
        }
        function addplus(fruitx) {
            let index = cartList.findIndex(cartList => cartList.name === fruitx);
            cartList[index].quantity++;
            let IDstring = "Quantity"+index;
            document.getElementById(IDstring).placeholder = cartList[index].quantity;
            CartStorage.setItem(IDstring,cartList[index].quantity.toString());
            calnbrItems();
            calpretotal();
            calSingleTotal(fruitx);
            calGST();
            calQST();
            calTotal();
        }
        function subminus(fruitx) {
            let index = cartList.findIndex(cartList => cartList.name === fruitx);
            if (cartList[index].quantity!=0) {
                cartList[index].quantity--;
                let IDstring = "Quantity" + index;
                document.getElementById(IDstring).placeholder = cartList[index].quantity;
                CartStorage.setItem(IDstring,cartList[index].quantity.toString());
                calnbrItems();
                calpretotal();
                calSingleTotal(fruitx);
                calGST();
                calQST();
                calTotal();
            }
        }
        function calSingleTotal(fruitx){
            let index = cartList.findIndex(cartList => cartList.name === fruitx);
            let IDstring = "tot"+index;
            let temp = cartList[index].total();
            if(temp.toString().length>3){
                temp = Number(temp.toFixed(3));
            }
            document.getElementById(IDstring).textContent = temp;
        }
        function deletefruit(fruitx){
            let index = cartList.findIndex(cartList => cartList.name === fruitx);
            cartList[index].quantity=0;
            let IDstring = "Quantity" + index;
            document.getElementById(IDstring).placeholder = "0";
            document.getElementById(cartList[index].name).style.display="none";
            CartStorage.setItem(IDstring,"0");
            calnbrItems();
            calpretotal();
            calSingleTotal(fruitx);
            calGST();
            calQST();
            calTotal();
        }


        CartStorage = window.localStorage;
        
        let cartList = [];
        cartList[0] = cartItem("Mango","ea.",1.99,"Pictures/Mango-2.jpg" );
        cartList[1] = cartItem("Apple","/lb",2.00,"Pictures/appl3.jpg");
        cartList[2] = cartItem("Peach",1.40,"Pictures/peach2.jpg");

        //LOADING PREEXISTING VALUES
        checkvalues();
        document.getElementById("Adding0").addEventListener('click',()=> addplus("Mango"));
        document.getElementById("Substracting0").addEventListener('click',()=>  subminus("Mango"));
        document.getElementById("Deleting0").addEventListener('click',()=> deletefruit("Mango"));
        document.getElementById("Adding1").addEventListener('click',()=> addplus("Apple"));
        document.getElementById("Substracting1").addEventListener('click',()=>  subminus("Apple"));
        document.getElementById("Deleting1").addEventListener('click',()=> deletefruit("Apple"));
        document.getElementById("Adding2").addEventListener('click',()=> addplus("Peach"));
        document.getElementById("Substracting2").addEventListener('click',()=>  subminus("Peach"));
        document.getElementById("Deleting2").addEventListener('click',()=> deletefruit("Peach"));
    </script>

我看不到您的HTML,但是您还需要确保将最后的document.getElementById调用添加到DOM后再进行。

这可能不言而喻,但是还要确保您使用的浏览器可以解析ES6。要么,要么您只是想将事件侦听器的语法更改为旧格式(无论如何,我还是会这样做,因为我们不会谈论很多代码,也不会从在这一领域中使用ES6受益)。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-