2015-09-25 66 views
1

我有這樣如何通過字符串中的JavaScript函數動態

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

JavaScript函數。我呼籲在下面給出的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')將它作爲字符串。

有沒有解決方法。

+0

不重定向到另一個頁面'查看/ NewsDetail.html'當您單擊錨標記? –

+0

感謝大家幫助我。儘管我只能接受一個答案,但給+1幫助我。 –

回答

2

你需要轉義引號像

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

根據你目前執行的參數abcd被視爲變量。因此你必須要得到undefined

+0

lemme試試這個並回復給你。 –

+0

是的,它確實給了我未定義。 –

+1

是的,它的工作,thanx很多幫助。 –

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 + '\"); ">' 
+0

對不起,在這種情況下,我們必須避開double因爲我們已經使用了兩個引號,所以onclick =「........」中的任何字符串必須被轉義。 – rajuGT

-1

這已經是它只是不顯示在alert'',但在背景是字符串而已。

+0

它在調試控制檯中給出未定義的錯誤。 –

+0

@MurtazaMunshi但你在你的問題中說,函數被稱爲doIt(abcd); – sunil

1

你可以這樣做一個:

var card='<a href="Views/NewsDetail.html;" onClick="Test(\'' + val.Img + '\'); "></a>'; 
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; 
    }); 
相關問題