使用 Javascript 更改背景图像时出现问题

发布于 2024-11-23 16:37:18 字数 4542 浏览 1 评论 0原文

我正在尝试通过 JavaScript 单击链接时更改链接的背景图像。我有五个选项卡,当用户单击选项卡时,我希望该选项卡的背景图像更改为纯白色图像。其他四个选项卡应更改为灰色图像。

所以我的 CSS 如下:

.listingindex li a {
    background:url(../images/tabe-nomal.jpg) left top no-repeat;
    color:#333333;
    display: inline-block;
    text-decoration:none;
    width:229px;
    padding:14px 0px 14px 10px;
}

.listingindex li a:hover {
    background:url(../images/tabe-over.jpg) left top no-repeat;
}

我的代码如下所示:

<div class="listingindex">
                    <?php           
                    $catId = get_cat_id('featured');                
                    $childOf = 'child_of='.$catId;  
                    $subCats = get_categories($childOf);                

                    // Slice array so only 5 categories can be displayed.
                    $subCats = array_slice($subCats, 0, 5);

                    foreach ($subCats as $value) {
                        $subCatsStr .= $value->cat_ID.'|';                      
                    }                                               

                    foreach ($subCats as $subCat) {                         
                        ?>
                        <ul>
                            <li><a id="tab_<?=$subCat->cat_ID?>" href="javascript:toggle(<?=$subCat->cat_ID?>,'<?=$subCatsStr?>')"><?=$subCat->name?></a></li>
                        </ul>          

                        <ul id="thumbnails_<?=$subCat->cat_ID?>" class="listingarea">                           
                            <?php $query = new WP_Query('category_name='.$subCat->name.'&posts_per_page=9');
                                while( $query->have_posts() ) : $query->the_post();?>
                                <li>                                                                                                            
                                    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">                                      
                                        <?
                                        $id = $post->ID;                                        
                                        $filename = $_SERVER["DOCUMENT_ROOT"].'/xxxxxxx/xxxxxx/xxxxx/xxxxxx/images/thumbnails/image_'.$id.'.jpg';                                                                                                                                                                                                                           
                                        if (file_exists($filename)) {
                                            ?><img src="<?php echo $templateDir; ?>/images/thumbnails/image_<?=$id;?>.jpg" alt="Image_<?=$id;?>" /><?                                           
                                        }else{                                          
                                            ?><img src="<?php echo $templateDir; ?>/images/thumbnails/no_image.jpg" alt="No Image" /><?
                                        }?>                                         
                                    </a>
                                </li>
                            <?php endwhile; ?>                                                                                                             
                        </ul>                                                                                   
                    <?}?>                 
                </div>      

最后我的 JS 如下所示:

function toggle(catID, subCatsStr) {
        document.getElementById('thumbnails_'+catID).style.display = "block";
        document.getElementById('tab_'+catID).style.backgroundImage = "url(/images/tabe-over.jpg)";                     

        subCatsArr = subCatsStr.split('|');
        for (i = 0; i <= subCatsArr.length - 2; i++){
            if (subCatsArr[i] != catID){
                document.getElementById('thumbnails_'+subCatsArr[i]).style.display = "none";                
                document.getElementById('tab_'+catID).style.backgroundImage = "url(images/tabe-nomal.jpg) left top no-repeat";
            }           
        }           
    }

目前,此代码只是在单击选项卡时删除灰色图像 (tabe-nomal.jpg)。

任何帮助表示赞赏。

问候...

I'm trying to change the background image of a link when it is clicked via Javascript. I five tabs and when the user clicks on a tab, I want the background image of that tab to change to a plain white image. Where as the other four tabs should be changed to a grey image.

So my CSS is as follows:

.listingindex li a {
    background:url(../images/tabe-nomal.jpg) left top no-repeat;
    color:#333333;
    display: inline-block;
    text-decoration:none;
    width:229px;
    padding:14px 0px 14px 10px;
}

.listingindex li a:hover {
    background:url(../images/tabe-over.jpg) left top no-repeat;
}

and my code looks like this:

<div class="listingindex">
                    <?php           
                    $catId = get_cat_id('featured');                
                    $childOf = 'child_of='.$catId;  
                    $subCats = get_categories($childOf);                

                    // Slice array so only 5 categories can be displayed.
                    $subCats = array_slice($subCats, 0, 5);

                    foreach ($subCats as $value) {
                        $subCatsStr .= $value->cat_ID.'|';                      
                    }                                               

                    foreach ($subCats as $subCat) {                         
                        ?>
                        <ul>
                            <li><a id="tab_<?=$subCat->cat_ID?>" href="javascript:toggle(<?=$subCat->cat_ID?>,'<?=$subCatsStr?>')"><?=$subCat->name?></a></li>
                        </ul>          

                        <ul id="thumbnails_<?=$subCat->cat_ID?>" class="listingarea">                           
                            <?php $query = new WP_Query('category_name='.$subCat->name.'&posts_per_page=9');
                                while( $query->have_posts() ) : $query->the_post();?>
                                <li>                                                                                                            
                                    <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">                                      
                                        <?
                                        $id = $post->ID;                                        
                                        $filename = $_SERVER["DOCUMENT_ROOT"].'/xxxxxxx/xxxxxx/xxxxx/xxxxxx/images/thumbnails/image_'.$id.'.jpg';                                                                                                                                                                                                                           
                                        if (file_exists($filename)) {
                                            ?><img src="<?php echo $templateDir; ?>/images/thumbnails/image_<?=$id;?>.jpg" alt="Image_<?=$id;?>" /><?                                           
                                        }else{                                          
                                            ?><img src="<?php echo $templateDir; ?>/images/thumbnails/no_image.jpg" alt="No Image" /><?
                                        }?>                                         
                                    </a>
                                </li>
                            <?php endwhile; ?>                                                                                                             
                        </ul>                                                                                   
                    <?}?>                 
                </div>      

Lastly my JS looks like this:

function toggle(catID, subCatsStr) {
        document.getElementById('thumbnails_'+catID).style.display = "block";
        document.getElementById('tab_'+catID).style.backgroundImage = "url(/images/tabe-over.jpg)";                     

        subCatsArr = subCatsStr.split('|');
        for (i = 0; i <= subCatsArr.length - 2; i++){
            if (subCatsArr[i] != catID){
                document.getElementById('thumbnails_'+subCatsArr[i]).style.display = "none";                
                document.getElementById('tab_'+catID).style.backgroundImage = "url(images/tabe-nomal.jpg) left top no-repeat";
            }           
        }           
    }

At the moment, this code simply removes the grey image (tabe-nomal.jpg) when a tab is clicked.

Any help appreciated.

Regards...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墨小沫ゞ 2024-11-30 16:37:18

看起来您的 backgroundImage url 可能不正确 - 尝试使用与初始 css 规则中相同的路径 (../images/..)

Looks like your backgroundImage urls might not be correct -- try using the same path (../images/..) as in your initial css rule

琉璃梦幻 2024-11-30 16:37:18

为了最终解决问题,我必须指定完整路径名:

document.getElementById('tab_'+catID).style.backgroundImage = "url(http://www.xxxxxx.ie/xxxxxxx/wp-content/主题/xxxxxxx/images/tabe-over.jpg)";

不知道为什么,但这解决了问题。它是一个 WordPress 主题,所以也许这与它有关。

To solve the problem in the end I had to specify the full path name:

document.getElementById('tab_'+catID).style.backgroundImage = "url(http://www.xxxxxx.ie/xxxxxxx/wp-content/themes/xxxxxxx/images/tabe-over.jpg)";

Not sure why, but this solved the problem. Its a Wordpress theme so maybe this had something to do with it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文