'onclick'存储价值不起作用

时间:2015-08-11 20:14:41

标签: javascript jquery html onclick web-storage

所以我有data2 = file.readlines() 标签:

<a>

正如您所看到的,它被赋予 <a href="/book-testdrive" class="addtocart" value="YX57WDL" title="Book Test Drive"> <i class="glyphicon glyphicon-road"></i> <span>&nbsp;Book Test Drive</span> </a> 的值现在我想要做的是在单击a标记并将其放入变量时捕获该值。

我的网页上有许多value="YX57WDL"个标签,其中包含许多动态创建的不同值。如果用户按下另一个标签,我希望它存储在同一个变量中,但将该值替换为唯一<a>标记值的值。

此外,变量需要存储在整个网站范围内,我想这个解决方案就是Web Storage API。

到目前为止,我已尝试使用此Javascript:

<a>

但是当我在console.log()时,链接变量它什么都没有。

知道为什么会这样吗?

由于

4 个答案:

答案 0 :(得分:1)

问题是document.querySelectorAll返回(非实时)节点列表。这意味着它基本上是一个数组,所以你可以为每个数组做一个循环:

for (var i = 0; i < links.length; i++) {
    links[i].onclick = function(){
        localStorage['storedValue'] = this.value ;
    }
}

另请注意,我已将localstorage更改为localStorage,因为它区分大小写。

答案 1 :(得分:0)

您需要等到加载DOM,否则如果您要查找的元素尚未添加到DOM,则对document.querySelectorAll()的调用将找不到任何内容。

我看到你添加了jquery作为标记,所以我假设你正在使用jquery。如果是这种情况,您可以使用jquery函数包装代码以等待DOM准备就绪,如下所示:

$(document).ready(function() {
    var links = document.querySelectorAll('.addtocart ');

    links.onclick = function(){
        localStorage['storedValue'] = this.value ;
    }
});

此外,如果您使用的是jquery,则可以使用其on函数来简化此操作。

$(document).ready(function() {
    $('.addtocart').on('click', function() {
        localStorage['storedValue'] = this.value;
    }
});

如果您没有使用jquery,请参阅this有关如何在没有jquery $(document).ready()函数的情况下等待DOM加载的问题。

答案 2 :(得分:0)

尝试&#34; .getAttribute(&#39;值&#39;)&#34;而不是&#34; .value&#34;:

var links = document.querySelector('a.addtocart');

links.onclick = function(){
    localStorage['storedValue'] = links.getAttribute('value');
}

答案 3 :(得分:0)

由于您使用的是jQuery,因此可以执行以下操作:

$("body").on("click", ".addtocart", function(e) {
    localstorage['storedValue'] = $(this).val();
});

你肯定想知道为什么你的尝试失败了。实际上,您距离解决方案并不太远,但您可能在创建链接之前运行了脚本。使用jQuery的.on()函数,您可以监听与选择器匹配的当前和未来元素(".addtocart")。