2014-01-13 95 views
0

我想要一个背景图片来改变html链接标签上的onclick属性。但它不工作。 如何用javascript onClick改变背景图片点击链接

<ul> 
    <li><a href="index.php?page=Home" onclick="one();">Home</a> </li> 
    <li><a href="index.php?page=Achivement" onclick="two();">Achivement</a></li> 

    <li><a href="index.php?page=Career" onclick="three();">Career</a></li> 
    <li><a href="index.php?page=Message" onclick="four();">Message</a></li> 
    <li><a href="index.php?page=opportunity">opportunity</a></li> 
    <li><a href="upload1.php">Register</a> 
    <li></li> 
</ul> 
    <script type="text/javascript"> 
    function one(){ 

$('body').css('background-image','url(image/back1.jpg)'); 

} 
function two(){ 

    $('body').css('background-image','url(image/back2.jpg)'); 

} 
function three(){ 


} 
function four(){ 


} </script> 

,你可以看到我试图传递一个函数在onclick属性,我已经已经定义在底部这些功能,仍然背景图像不会改变。我已检查图像所在的目录是否正确。我没有定义任何背景图像在我的CSS所以。我需要帮助,它让我疯狂。

+0

任何console.log错误? – Sergio

+1

是否包含jQuery库? –

+4

页面将被重定向,因为它是超链接。 –

回答

2

两几件事情:

  1. 您需要包括jQuery库(如果你没有的话)
  2. 您需要防止默认动作,因为它是一个链接
  3. 你需要以功能它重用。

例子:

<script type="text/javascript"> 
    $(function(){ 
     $('a').on('click',function(e){ 
      var href = this.href.split('='), 
       img; 

      // prevents following to the link location 
      e.preventDefault(); 

      // determines which background image 
      switch(href[1]){ 
       case 'Home': 
        img = 'back1.jpg'; 
        break; 
       case 'Achievement': 
        img = 'back2.jpg'; 
        break; 
       case 'Career': 
        img = 'back3.jpg'; 
        break; 
       case 'Message': 
        img = 'back4.jpg'; 
        break; 
       case 'Opportunity': 
        img = 'back5.jpg'; 
        break; 
      } 

      // assigns background-image 
      $('body').css({backgroundImage:'url(image/'+img+')'}); 
     }); 
    }); 
</script> 

这将使伟大的重用,并消除了内联onclick=声明的必要性。

+0

我不知道如何使用它,因为我是相当新的JavaScript,但是它不会停止页面调用url index.php?page = Home等我可以复制并粘贴您的代码,它会工作吗? 我已经包含了jquery libray BTW –

+0

@SanjokGurung你在**上面显示的脚本之前调用了jQuery库**吗?你确定删除你的HTML中的'onclick'语句吗? – PlantTheIdea

+0

@PlanTheldea,图像显示正常,但是,URL调用被阻止,所以它不能加载它应该的内容。 –

1

你有一个href随着点击。您需要指定您的链接为

<li><a href="#" onclick="one();">Home</a> </li> 

您将需要通过javascript重定向到页面。否则,你实质上是要求它将你重定向到URL并调用你的javascript,但是如果重定向发生了,你甚至会看到JavaScript执行的结果如何?

+0

好吧我尝试通过JavaScript重新导入,但我仍然坚持相同的问题。我href是空的,我的功能代码为 功能changeImage(数量) { \t .post的$( '核心/ changebg.php',{号:号}, 功能(数据) { window.location的=“index.php?page = Message”; });(“body”).css('background-image','url(“image /'+ number +'。jpg”)' } –

+0

您正在更改window.location - 可能会在连接字符串中添加另一个参数以指示哪个图像,然后将代码添加到$(document).ready()中以获取连接字符串值,然后更改图片。 – Gjohn

1

删除您的内嵌脚本和所有的功能,并尝试这个:

$(function() { 
    $('ul li a').on('click', function (e) { 
     e.preventDefault)(); 
     $('body').css('background-image', 'url(image/back' + $(this).closest('li').index() + '.jpg)'); 
    }); 
}); 

如果你只是要定位的前4 li您可以添加到我的代码if($(this).closest('li').index() < 5){ change background };

关于链接你有,如果你想使用它们

+0

您正在捕获LI元素的点击事件而非锚点。 –

+1

@RajaprabhuAravindasamy,好点,纠正。 – Sergio

0

它应该是这样的:

onclick="one(); return false;" 

当你点击一个链接时,新页面加载,所以你必须通过编写return false

,以防止这种行为你也可以写

onclick="return one();" 

和javascript:

function one(){ 
    $('body').css('background-image','url(image/back1.jpg)'); 
    return false; 
} 
+0

不,它不会,它会提交,但这不是一个通用的解决方案。 – Zlatko

+0

我希望它也加载页面。这将加载图像,但阻止加载页面内容,因为它已经重定向。 –

1

尝试使用jQuery元素的这款装备:

$(function() { 
    $('elementLink').on('click', function(e){ 
     e.preventDefault(); 
     $('body').css('background-image','url(image/back1.jpg)'); 
    }); 
}); 
0

我会一直试图将代码中的图像src决定,并将其移入CSS文件。喜欢的东西:

// could be good to keep your url params as lower case as a convention, then this 
// options object could be skipped and you'd just use the param as the classname 
var options = { 
    'Home': 'home', 
    'Achievement': 'achievement' 
}; 

$("ul li a").click(function(e){ 
    e.preventDefault(); 

    var href = $(this).attr("href"); 

    if(href[1]) 
    { 
    $("body").addClass(options[href[1]]); 
    } 

}); 

然后在你的CSS文件

body.achievement 
{ 
    background: url("/images/some_img.png"); 
} 

body.home 
{ 
    background: url("/images/some_img2.png"); 
} 

当你想更新索马里红新月会,或样式,你do't不得不通过在src搜索这样

PS我没有运行上面的代码,但希望你有这个想法:)