如何动态地在Javascript函数中传递字符串

时间:2015-09-25 11:21:52

标签: javascript jquery html

我有像这样的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' 当我点击标记时,它会调用doIt(abcd),但我想调用doIt('abcd')将其作为字符串传递。

是否有解决方法。

6 个答案:

答案 0 :(得分:2)

您需要转义

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

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

答案 1 :(得分:1)

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

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

到[添加引用转义字符\“]

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

答案 2 :(得分:1)

你可以这样做:

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

答案 3 :(得分:0)

又一个选择:

   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;
    });

答案 4 :(得分:-1)

它已经是一个字符串,它不会在drop table if exists test; create table test (id INTEGER, name TEXT, PRIMARY KEY (id) on conflict replace, UNIQUE (name)); insert into test values (1, "a"); insert into test values (1, "a"); insert into test values (2, "b"); insert into test values (2, "a"); 上显示'',但在背景中它只是字符串。

答案 5 :(得分:-1)

doIt(&#34;&#39; + val.Img +&#39;&#34;);

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