繁体   English   中英

使用冒号,分号等符号将变量传递给javascript函数

[英]Passing variable to javascript function with symbols like colon, semicolon, etc

目前我在我的当前功能上存在这种情况。

基本上,这个ajax调用将生成表情符号列表,但是我希望当用户点击笑脸图像时,笑脸代码将被添加到消息文本框中。

例如,当用户点击微笑图像时, :-)代码将被添加到消息框中。 我的问题是,是否可以将代码:-)传递给函数?

在我当前的代码中, addText(' + key + ')不起作用。 key的值是:-) 错误说Uncaught SyntaxError: Unexpected token :当值为;) ,错误是Uncaught SyntaxError: Unexpected token ; 我也有:lol:等类似的代码。 任何帮助都感激不尽。

$.ajax({
    type: "POST",
    async: true,
    cache: false,
    dataType: "json",
    url: "./assets/php/scripts.php",
    data: {command: 'get-smileys'},
    success: function (data) {
        $("#smileys").empty();
        $("#smileys").append("<br>");
        var div_obj = document.createElement("ul");
        $(div_obj).addClass('list-inline');
        $.each(data, function(key, value) {
            $(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" onclick="addText(' + key + ');"><br>' + key + '</div></li>')
            $("#smileys").append($(div_obj)); 
        });
        $("#smileys-flag").text('1');
        $("#loader-chat").hide();
    }
});

这里是添加文本部分的功能:

function addText(text){
    var fullMessage = $("#message").val();
    $("#message").val(fullMessage + text);
}

问题是您需要将它们作为字符串文字传递,如下所示。

'" onclick="addText(\'' + key + '\');"><br>'

但更好的解决方案是使用jQuery事件处理程序而不是内联类

$(div_obj).append('<li><div class="col-xs-1 col-sm-1 col-lg-1" style="width:110px; height:80px" align="center"><img class="smileys" src="assets/img/smileys/' + value[0] + '" title="' + value[1] + '" data-smiley="' + key + '"><br>' + key + '</div></li>')

然后

jQuery(function ($) {
    $("#smileys").on('click', '.smileys', function () {
        addText($(this).data('smiley'))
    });
})

您需要将args作为字符串文字传递。 然后当你解码它时,你可以得到你想要的子串。

例如:

function takeSmiley(smiley) {
  return smiley.substr(1, smiley.length - 2) // Return lol for :lol:
}

takeSmiley(":lol:");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM