2013-04-18 3 views
0

내 div의 배경을 변경하는 버튼을 만들려고합니다. javascript 함수에 2 개의 매개 변수를 지정하고 싶습니다.자바 스크립트 함수로 배경 변경

배경을 바꿀 div의 ID입니다. 백그라운드 유형이 NUMBER 개입니다. 예를 들어

...

<div id="background" class="background1"> 
    <p>Choose a Background</p> 
    <a href="javascript:change(background,10)" class="btn"></a> 
    </div> 

내가 원하는 기능은 10합니다 (있었던 파라미터)

I까지 background1, background2, background3, background4 ...에 배경 DIV의 클래스를 변경 많은 div에서 사용할 것이기 때문에 매개 변수가있는 함수가 필요합니다!

<div id="Something"></div> 
<a href="#" onclick="return change('Something')">Change Background</a> 

Working jsfiddle here (감안할 때 나는 당신의 배경 이미지를하지 않아도, 난 : 는 ... 그것은 (

+0

입니까? 이것은 어느 쪽이든 쉬운 일처럼 보입니다. 당신이 작성한 실제 함수 또는 그 함수에 무엇을 넣을 지 모르기 때문에 자리 표시 자 예제 만 바꾸면됩니까? –

+0

그냥 자리 표시 자 ... –

+0

이 숙제입니까? – vol7ron

답변

1

이 시도 =

var nextId = 1; 
var highestId = 10; //highest image Id 

function change(DivId) { 

    //Change the background image only... 
    document.getElementById(DivId).style.backgroundImage = '../' + nextId + '.jpg'; 

    /*Or to set class instead, swap the above line for the one below...*/ 
    //document.getElementById(DivId).className = 'BackgroundClass' + nextId; 

    if(nextId > highestId) {nextId = 1;} 
    return false; 
} 

샘플 사용을 할수 없어 무엇을 설정했는지 경고 함)

+0

내가 만든 것이 아니었다. 나는 이것을 다음과 같이 부를까요? ? 버튼을 클릭 할 때마다 구체적으로하지 않았다고 생각합니다. 배경에 +1을 덧붙여 야합니다. –

+0

아, 제 대답을 업데이트하겠습니다. jQuery를 사용하고 있습니까? – Basic

+0

나는 OP가 여기 찾고있는 것이 틀렸을 수도 있지만, 클래스를 변경하는 것이 무엇인지 확실히 알고있다. 어떻게 질문을 배경으로 추측 오전 기반으로, background2..background10 이미 배경 이미지 세트와 CSS 정의 클래스입니다. –

1

새로운 HTML5 기능을 사용할 수 있다면 '데이터'속성을 사용하여 각 div에 bg 수를 저장하고 답변을 간소화합니다. g 불과 3 가능한 배경은,하지만 당신은 배열 내에서 원하는만큼을 추가 할 수 있습니다

var bgs = new Array('images/bg_a.jpg','images/bg_b.jpg','images/bg_c.jpg'); 

function change(div_id){ 
    elm_div = document.getElementById(div_id); 
    if((elm_div.getAttribute('data-bg') == null || elm_div.getAttribute('data-bg') == (bgs.length-1)){ 
    new_bg_pos = 0 
    }else{ 
    new_bg_pos = elm_div.getAttribute('data-bg'); 
    new_bg_pos++ 
    } 
    elm_div.setAttribute('data-bg',new_bg_pos); 
    elm_div.style.background = "url("+bgs[new_bg_pos]+")"; 
} 

div_id 변경하려는 부문의 id, 그것은 회전합니다 기능을 배열의 모든 배경을 통해 'data-bg'속성 (이전 브라우저와 호환되지 않을 수도 있음)에 위치를 저장하는 각 부서마다 별도로. HTML에서 또한

, 대신 스팬과 같은 다른 링크를 사용 뭔가, 앵커는 어떤 위치에 당신을 보내려고합니다 : 당신이 jQuery를 사용하고자하는

<span onclick="change('my_div')" >Change BG of "my_div" the next bg </span> 
+0

+1 그건 우아한 해결책이지만 OP가 bg를 각 클릭마다 회전 시키길 원했음을 알아 두십시오. – Basic

+0

@Basic, 미안 해요, 그가 회전하고 싶다는 것을 몰랐습니다. 그의 질문에 표현되어 있지 않습니다. 제발 새로운 대답, 각 부서가 백그라운드를 개별적으로 회전 할 수 있도록 허용합니다. 배경 인덱스에 대한 매개 변수가 필요하지 않습니다. 신형 HTML5 기능을 신중하게 사용합니다. – multimediaxp

+0

내 대답에 댓글에 언급되었으므로 그 사실을 눈치 채실 이유가 없습니다. 여전히 우아한 솔루션. 그러나 새로운 대답을 게시하는 대신 기존 답변을 편집 하시길 권합니다. – Basic

관련 문제