2017-09-16 59 views
1

我試圖加載頁面上使用jQuery按鈕,當有人點擊該按鈕我想onclick函數發生和ID值保存在本地存儲。空使用本地存儲和JQuery

但是,當登錄到控制檯時,這會給我一個null!這是錯的嗎?我怎樣才能做到這一點?

var str = '<div class="row"> 
    <div class="col-md-4"> 
    <div class="thumbnail"> 
    <img src="' + poster + '"alt="Poster_here"> 
    <div class="caption"><h3>' + title +'</h3><p>' + desc + '</p><p> 
    <a href="" class="btn btn-primary" role="button" 
    script="onclick()=function(){localStorage.setItem("idd","' + 
    id + '");' +'}">Read More and Explore</a> </p></div></div></div> 
    </div>'; 
    $('#add_all_here').append(str); 

HTML: -

<div class="container-fluid"> 
    <div id="add_all_here"> 

    </div> 
</div> 
+0

你應該表現出你的HTML(用於#add_all_here ) – HardlyNoticeable

+0

完成。 @HardlyNoticeable –

+0

你的字符串在一行嗎? –

回答

1

您的代碼按預期運行。
我想我知道是什麼導致你認爲它沒有運行。
<a>標籤內的這條線:script="onclick()=function(){localStorage.setItem("idd","' + id + '") 這不是附加事件處理程序的方法。

您需要將事件名稱的屬性的函數引用傳遞給該屬性。
所以不是script=onclick...
它應該是:onclick='functionName(event)'
另一件事是,你需要防止重定向到網站上提供的時間,把事情在本地存儲,然後才重定向客戶端。
因此,您可以使用event.preventDefault()來停止重定向,然後從href屬性中抓取url並設置window.location

這裏是一個工作示例與修改後的代碼(所以我用console.log我不能使用本地存儲的片段):

function setLocalStorage(e){ 
 
    e.preventDefault(); 
 
    var id = e.target.getAttribute('data-id'); 
 
    var url = e.target.href; 
 
    console.log('saving id - ' + id); 
 
    console.log('redirecting to - ' + url); 
 
    //window.location = url; //this will redirect 
 
} 
 

 
var poster = 'sdsd', 
 
    title = 'blah', 
 
    desc= 'skjdksdj ksjd ', 
 
    id= 457 
 

 
var str = '<div class="row"><div class="col-md-4"> <div class="thumbnail"> <img src="' + poster + '"alt="Poster_here"><div class="caption"><h3>' + title +'</h3><p>' + desc + '</p><p><a href="http://example.com" class="btn btn-primary" data-id="' + id + '" role="button" onclick="setLocalStorage(event)">Read More and Explore</a> </p></div></div></div></div>'; 
 
$('#add_all_here').append(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container-fluid"> 
 
    <div id="add_all_here"> 
 

 
    </div> 
 
</div>