el表达式里面作运算的时候,运算符后面是一个js变量,但是el表达式自动忽略这个变量怎么办?
$(function(){
                    $("#toPage").blur(function(){
                        var num = parseInt($("#toPage").val());             
                        if(num != null && num != ""){
                            if(!/^[1-9][0-9]*$/.test(num)){
                                alert('请输入正确的页号!');
                            }else{
                                $("#pageVal").attr('href',"<%=basePath %>/goods/allGoods?pageNo=${page.pageNum+num}");
                            }
                        }
                    });
                });

在浏览器按F12看值的时候,只有${page.pageNum}的值,而num的值没有加上去,如果这样写${page.pageNum+num-1},就自动忽略+num,直接就执行-1了。因为我在做pagehelper的分页,我想可以直接跳转到指定的页号,所以我就直接获取到input输入框里面的值,然后直接加到${page.pageNum}上。如果在url后面的值写成pageNo=num就报400,希望大牛能帮我解决一下,不胜感激。

3个回答

你要不就用el表达式的赋值方式把num赋值成el表达式的样式,要不就在js里面先把${page.pageNum}+num的值求出来,不是用${page.pageNum+num},而是用${page.pageNum}+num。${}里面取的是el表达式里面的属性值,而num是js里面的变量,所以在${}里面肯定取不到num的值啊。

Bigger_Ant
Bigger_Ant 好的好的,非常感谢
9 个月之前 回复
doncha
doncha 照你现在的做法,你应该在attr方法上面,先用var page = ${page.pageNum} + num 求出值,然后将page值代入attr里面:${"#pageVal"}.attr("href","<%=basePath%>/goods/allGoods?pageNo="+page);
9 个月之前 回复

el 和js解析顺序问题,
我先介绍一下请求处理顺序,然后告诉你错在哪里

1、服务器接收到请求
2、将被请求的接收jsp文件件加载到内存
3、读取识别 el 表达式,渲染页面 (此时你的 js 就是普通的文本,不能运行)
4、将渲染完成后页面发送给客户端
5、客户端接收到页面 执行js(此时 el表达式由于已经被服务器解析完成 在这阶段el表达式不存在)

简单解释一下 就是 el 表达式与js不能混编
执行顺序为 服务器 先执行 el模板渲染 客户端后执行js

你的问题是将js变量写入了el中 el在解析的时候 js未执行 故产生错误 无法取到 num的值,

解决方案同楼上

Bigger_Ant
Bigger_Ant 好的好的,非常感谢
9 个月之前 回复

试下

$(function(){
                    $("#toPage").blur(function(){
            var pageNum = "${page.pageNum}";
                        var num = parseInt($("#toPage").val());             
                        if(num != null && num != ""){
                            if(!/^[1-9][0-9]*$/.test(num)){
                                alert('请输入正确的页号!');
                            }else{
                                $("#pageVal").attr('href',"<%=basePath %>/goods/allGoods?pageNo="+(parseInt(paegNum)+num));
                            }
                        }
                    });
                });
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题