我不确定这里出了什么问题但是当我尝试运行我的代码时,wishlist.getAttribute返回null,但是如果我特意调用getElementById它将返回我需要的值。虽然我需要wishlist.getAttribute来返回值,因为我为心愿单中的每个项目生成一个链接,我需要它来保存产品ID。
*注意我在元素中使用了一个类而不是一个Id用于多个链接,尽管我在这里使用了Id来表示如果我特意调用元素Id它将返回'data-wish'属性值
wishlist.getAttribute("data-wish");
返回null(错误)
document.getElementById("remove_wishlist").getAttribute("data-wish");
返回2
(我需要的值)
while ($rst = $query->fetch_assoc()){
//... display wishlist product and remove item link
echo '<a href="#" onclick="removeWishlist(wishlist);" id="remove_wishlist" data-wish="<?php echo $id; ?>"><strong style='color:rgba(255,0,0,0.8);'>Remove Item</strong></a>';
}
JS
function removeWishlist(wishlist){
var $x = wishlist.getAttribute("data-wish"); //returns null when the link is clicked
var $y = document.getElementById("remove_wishlist").getAttribute("data-wish"); //returns "2" (product id)
$(document).ready(function(){
//remove selected item and reload wishlist
$.ajax({
url: "php/panel.php",
data: { wishlist_id_remove: $x },
type: "post",
dataType: "text",
success: function(response) {
alert(response);
},
});
});
}
只是要添加,写有wishlist项目和删除项目链接的PHP页面将被加载到一个带有Jquery.load()的元素中,这样我就可以自动更新心愿单而无需刷新页面,也许这有助于我问题
答案 0 :(得分:5)
添加CoursesWeb的答案,这一行
echo '<a href="#" onclick="removeWishlist(wishlist);" id="remove_wishlist" data-wish="<?php echo $id; ?>"><strong style='color:rgba(255,0,0,0.8);'>Remove Item</strong></a>';
是错误的,如果此代码已经从php运行,它将不会回显data-wish
attr中的值$ id。它只输出字符串文字。
那一行应该是:
echo '<a href="#" onclick="removeWishlist(this);" id="remove_wishlist" data-wish="'.$id.'"><strong style='color:rgba(255,0,0,0.8);'>Remove Item</strong></a>';`
答案 1 :(得分:4)
使用this
作为使用onclick
调用的函数的参数。
onclick="removeWishlist(this);"