【问题标题】:How to pass string in Javascript function dynamically如何在Javascript函数中动态传递字符串
【发布时间】:2015-09-25 11:21:51
【问题描述】:

我有一个这样的javascript函数

function doIt(link) {
    alert(link);
}

我在下面给定的 JS 代码中调用了这个函数,我在其中创建了一个标签并在运行时将它附加到我的 html 页面:

jQuery.each(data, function (i, val) {
    var card = '<a href="Views/NewsDetail.html" onclick=" doIt(' + val.Img + '); "> \
                <div class=" card"> \
                <img src='+ val.Img + ' /> \
                <p>'+ val.Title + '</p> \
                </div> \
                </a>';
    document.getElementById('News').innerHTML += card;
});

比如说我们的val.Img = 'abcd' 当我单击 a 标签时,它调用doIt(abcd),但我想调用doIt('abcd'),将其作为字符串传递。

是否有任何解决方法。

【问题讨论】:

  • 当你点击锚标签时,它不会重定向到另一个页面Views/NewsDetail.html吗?
  • 感谢大家帮助我。虽然我只能接受一个答案,但为了帮助我而给予 +1。

标签: javascript jquery html


【解决方案1】:

您需要转义引号,例如

var card ='<a href="Views/NewsDetail.html" onclick="doIt(\'' + val.Img + '\'); "> \
                                                        //^               ^

根据您当前的实现,参数abcd 被视为变量,因此您必须得到undefined

【讨论】:

  • 让我试试这个然后回复你。
  • 是的,正是它给了我不确定性。
【解决方案2】:

你可以这样做:

var card='<a href="Views/NewsDetail.html;" onClick="Test(\'' + val.Img + '\'); "></a>';

【讨论】:

    【解决方案3】:

    下面的 HTML 字符串已经使用了两个引号,直到字符 doIt(。因此,引号内的任何字符串类型值都必须使用任何引号字符进行转义。

     var card = '<a href="Views/NewsDetail.html" onclick=" doIt(' + val.Img + '); ">'
    

    到[添加引号转义字符\"]

     var card = '<a href="Views/NewsDetail.html" onclick=" doIt(\"' + val.Img + '\"); ">'
    

    【讨论】:

    • 哦!更正为锚标记。如您所知,在 JS 中 ' 和 " 是相同的。只需使用 other-quote 转义而不是 \quote-char。代码看起来干净且易于跟踪字符串 concat 问题。
    • 对不起,在这种情况下,我们必须转义双引号,因为我们已经使用了这两个引号。因此 onclick=" ........ " 中的任何字符串都必须转义。
    【解决方案4】:

    另一种选择:

       var doItAndRedirect=function(val){
               //do stuff with val here
           window.location = "Views/NewsDetail.html"; 
        }
    
        jQuery.each(data, function (i, val) {
            var card = '<a href="javascript:doItAndRedirect(\''+ val +'\')">'+
                        '<div class=" card">' +
                        '<img src='+ val.Img + ' />' +
                        '<p>'+ val.Title + '</p>' +
                        '</div>'+
                         '</a>';
            document.getElementById('News').innerHTML += card;
        });
    

    【讨论】:

      【解决方案5】:

      它已经是一个字符串,它只是在alert 上不显示'',但在后台它只是字符串。

      【讨论】:

      • @MurtazaMunshi 但你在问题中说函数被称为 doIt(abcd);
      【解决方案6】:

      doIt("' + val.Img + '");

      应该这样做,但如果你有,例如,“在 val.Img 内,你需要引用那些:How do I add slashes to a string in Javascript?

      【讨论】:

        猜你喜欢
        • 2011-12-13
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 2015-01-02
        • 2012-03-30
        • 2017-11-09
        • 2013-07-09
        • 2021-01-04
        相关资源
        最近更新 更多