Javascript jQuery[object]问题

Javascript jQuery[object]问题,javascript,jquery,Javascript,Jquery,我想使用jQuery更新css属性,但它不起作用。使用下面代码中的警报,我的第一个警报将显示 url("file:///H:/Web/example/HTML/images/red-arrow-up.png") [object Object] 但是第二个警报(在if语句中)出现了 url("file:///H:/Web/example/HTML/images/red-arrow-up.png") [object Object] 但我想让它做的是更新属性并在url中从上到下更改。知道我做错

我想使用jQuery更新css属性,但它不起作用。使用下面代码中的警报,我的第一个警报将显示

url("file:///H:/Web/example/HTML/images/red-arrow-up.png")
[object Object]
但是第二个警报(在if语句中)出现了

url("file:///H:/Web/example/HTML/images/red-arrow-up.png")
[object Object]
但我想让它做的是更新属性并在url中从上到下更改。知道我做错了什么吗

    $(document).ready(function() {
        $( ".portlet-header" ).click(function() {
            var currValue = $(this).children(".portlet-arrow").css("background-image");
            alert (currValue)
            if ($("currValue:contains('up')"))  {
                var newValue = $(currValue.replace("up", "down"));
                alert(newValue)
                $(this).children(".portlet-arrow").css("background-image", newValue)    
            };
            if ($("currValue:contains('down')"))    {
                var newValue = $(currValue.replace("down", "up"));
                alert(newValue)
                $(this).children(".portlet-arrow").css("background-image", newValue)    
            };
        });
    });

这基本上可以归结为对jQuery选择器语法的过度理解,而没有阅读文档来了解选择器的实际功能

  • 为什么要在
    $()
    中替换(“向下”、“向上”)?这看起来像是试图用包含图像URL的字符串创建jQuery对象。不要那样做。在
    $()
    中不能无缘无故地使用任意Javascript代码

  • 而且,
    $(“currValue:contains('down')”)
    并没有按照您的想法执行。该语法用于根据特定条件选择DOM节点,而不是在字符串上实现任意条件语句

  • 代码可以进一步改进:

    $(function() {
        $(".portlet-header").click(function() {
    
            var currValue = $(this).children(".portlet-arrow").css("background-image");
            alert(currValue);
    
            if (currValue.indexOf('up') != -1) {
                var newValue = currValue.replace("up", "down");
            }
            else if (currValue.indexOf('down') != -1) {
                var newValue = currValue.replace("down", "up");
            }
            else {
                return;
            }
    
            alert(newValue);
            $(this).children(".portlet-arrow").css("background-image", newValue);
        });
    });
    

    警报显示[object object],因为您正在通过以下方式从字符串创建jQuery对象:

    $(currValue.replace(“向上”、“向下”);
    
    您应该使用currValue.replace(“向上”、“向下”);没有$()

    if($(“currValue:contains('up'))){
    
    不正确。这始终返回true,因为您正在从传递给$()的字符串创建空jQuery对象

    你应使用:

    currValue.indexOf('up')!=-1
    

    /up/.test(currValue)
    

    测试字符串是否包含一些子字符串。

    这正是我想要的。我目前正在学习javascript/jQuery,但语法很混乱。@SamWarren:我建议先学习javascript本身,然后在你感到舒服的时候添加jQuery库的用法。@SamWarren试着不要学习jQuery,而专注于javascript/DOM.相关: