getAtrribute()返回null?

时间:2015-10-26 16:58:26

标签: javascript jquery

我不确定这里出了什么问题但是当我尝试运行我的代码时,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()的元素中,这样我就可以自动更新心愿单而无需刷新页面,也许这有助于我问题

2 个答案:

答案 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);"