所以我有data2 = file.readlines()
标签:
<a>
正如您所看到的,它被赋予 <a href="/book-testdrive" class="addtocart" value="YX57WDL" title="Book Test Drive">
<i class="glyphicon glyphicon-road"></i>
<span> Book Test Drive</span>
</a>
的值现在我想要做的是在单击a标记并将其放入变量时捕获该值。
我的网页上有许多value="YX57WDL"
个标签,其中包含许多动态创建的不同值。如果用户按下另一个标签,我希望它存储在同一个变量中,但将该值替换为唯一<a>
标记值的值。
此外,变量需要存储在整个网站范围内,我想这个解决方案就是Web Storage API。
到目前为止,我已尝试使用此Javascript:
<a>
但是当我在console.log()时,链接变量它什么都没有。
知道为什么会这样吗?
由于
答案 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"
)。