首页 > EL表达式向 JS 函数传值

EL表达式向 JS 函数传值

EL表达式,向JS内传递参数遇到问题。

传递值类型,加上单引号就可以:

<a class="btn" href="javascript:test('${param.name}');" id="name">姓名</a>

想要传递对象(Map、List等),一直是空值,加上单引号,就是一个类名@hash值的一个字符串。

很纠结,如何向JS内传递对象类型的EL表达式呢?不至于无法实现吧。


1.你传递对象最后要拿到对象里的某个值,可以直接采用获取参数的形式

<a class="btn" href="javascript:test('${map.name}','${map.age}');" id="name">姓名</a>

2.如果你非要传递对象的话,可以先把对象转成JSON字符串,然后在test方法中转成JSON

<a class="btn" href="javascript:test('${mapString}');" id="name">姓名</a>

function test(str) {
    try {
        var obj = JSON.parse(str);
        //TODO
    } catch (e) {
        throw e;
    }
}

3.使用第二种方式有风险,例如你的map中有用户输入的信息,包含引号就会出现HTML解析错误。一般这种情况我是这样处理的

    <a class="btn" href="javascript:void(0)" id="name" data-name="${map.name}" data-age="${map.age}">姓名</a>
    
    $('#name').click(function () {
        var $this = $(this);
        var name = $this.data('name');
        var age = $this.data('age');
    
        //TODO
    
    });
    
    数据过多我会写个方法来获取数据
    
    $('#name').click(function () {
        var $this = $(this);
        var data = seriData($this);
    
        //TODO
    
    });
    
    function seriData(el) {
        return {
            name: el.data('name'),
            age: el.data('age'),
            grade: el.data('grade')
        }
    }
【热门文章】
【热门文章】