[英]How change background image with javascript onClick on a link
我希望背景圖片使用html鏈接標簽上的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上定義任何背景圖片。 我需要幫助,這使我發瘋。
幾件事:
例:
<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=
聲明。
點擊的同時帶有href。 您需要將鏈接指定為
<li><a href="#" onclick="one();">Home</a> </li>
您將需要通過javascript重定向到該頁面。 否則,您本質上是在要求它去將您重定向到URL並調用您的javascript,但是如果發生重定向,您怎么會看到javascript執行的結果呢?
刪除內聯腳本和所有函數,然后嘗試以下操作:
$(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 };
關於您擁有的鏈接(如果要使用它們)
嘗試將此方法用於jQuery元素:
$(function() {
$('elementLink').on('click', function(e){
e.preventDefault();
$('body').css('background-image','url(image/back1.jpg)');
});
});
應該是這樣的:
onclick="one(); return false;"
當您單擊鏈接時,將加載新頁面,因此您必須通過編寫return false
來防止此行為
你也可以寫
onclick="return one();"
和javascript:
function one(){
$('body').css('background-image','url(image/back1.jpg)');
return false;
}
我將始終嘗試將image 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");
}
這樣,當您要更新src或樣式時,就不必搜索src了
ps我還沒有運行上面的代碼,但希望您能明白:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.