2010-05-27 2 views
1

드롭 다운 목록을 사용하고 싶습니다. 콘텐츠를 클릭 할 때마다 다른 그림이 표시됩니다. 하지만 다른 값을 사용하고 싶기 때문에 'value'속성을 사용하고 싶지 않습니다.드롭 다운 목록을 사용하여 사진을 변경하는 방법은 무엇입니까?

예 : 그 작업을 수행하려면 어떻게

<select name='test'> 
<option value='1'>1</option> 
<option value='2'>2</option> 
<option value='3'>3</option> 
<option value='4'>4</option> 
</select> 

?

감사합니다.

편집 : 뾰족한의 제안에

, 그것은 작동합니다.

<select name="dpt" onChange="picture.src=this.options[this.selectedIndex].getAttribute('data-whichPicture');" > 
<option value="1839" data-whichPicture='./imgs/t1.jpg' >01</option> 
<option value="1661" data-whichPicture='./imgs/t2.png' >02</option> 
</select> 
</select> 
<img src='' id='picture' /> 

편집 : 문제가 있습니다

, 즉 내가 페이지를 새로 고침하는 경우, 기본은 그림이 표시됩니다 만 드롭 다운 목록에서 선택이 남아있을 것입니다. 그것을 고치는 방법?

+0

를 표시 할 때 당신은 자바 스크립트의 특수 문자 속성을 참조하는 브래킷 표기법을 사용해야 사용하려는 하나를 선택해야 할 것입니다 : 'this.options을 [ this.selectedIndex] [ "data-thatPicture"] ' 참조 : http://www.dev-archive.net/articles/js-dot-notation/ – RoToRa

+0

나는 당신의 제안을 시도했지만 효과가 없습니다. –

답변

2

각 옵션의 "클래스"를 사용하여 어떤 이미지를 표시할지 표시 할 수 있습니다. 당신이 요즘 아름다운 사람들의 모든처럼 HTML5로 작성하는 경우, 당신은 "데이터"속성을 사용할 수 있습니다

<option value='1' data-whichPicture='http://whatever.com/picture_017.jpg'>1</option> 

당신은 실제로 어떤 당신이 태그에 원하는 속성 스틱 수 있지만 떠날거야 페이지를 유효하지 않은 상태로 만듭니다. HTML5 속성은 아직 유효하지 않습니다 (생각하지는 않습니다, 마지막으로 시도한 HTML5 유효성 검사기는 상당히 위험합니다). 그러나 W3C는 언젠가는 될 것이라고 약속합니다.

편집 —는 - 귀하의 질문은 당신이 누군가가 <select>의 "클릭"하면 사진을 변경할 것을 언급하고있다. 실제로 각 <option>에서 "클릭"이벤트를 얻을 수 있지만 "변경"이벤트를 감시해야합니다. 사용자는 <select>을 탭하고 위쪽 및 아래쪽 화살표 키를 사용하여 선택 사항을 변경할 수 있습니다. 사용자가 <select>에서 탭하거나 다른 곳을 클릭 할 때까지는 '변경'이벤트가 발생하지 않습니다. (그것은 "키 누름"이벤트를 얻을 수있을, 나는 그것을 시도하지 않은하지만 난 그냥 수도 ...) (당신이 "데이터 -"트릭을 사용하는 경우)

편집 —이 속성을 얻으려면, 당신은 요소의 "getAttribute를"방법을 사용해야합니다 :

var whichPicture = sel.options[sel.selectedIndex].getAttribute('data-whichPicture'); 
+0

감사합니다. 지금 당장 응용 프로그램에 적용 할 수 있습니까? 나는 그것을 사용하려고 시도했지만 그림을 표시하지 않는다. –

+0

어 ... 네가 무슨 뜻인지 모르겠다. 아마 더 많은 코드를 게시하면 도움이 될 것입니다. – Pointy

+0

게시물을 업데이트했습니다. 확인해 주시겠습니까? –

1

당신은 올바른 이미지를로드하는 옵션 값과 이미지

{ 1: "imgA.png", 2: "imgB.png" } 

다음 기능을 사용 사이의 맵을 설정할 수 있습니다 이 매핑을 기반으로

또 다른 방법은, 다음과 같이 이미지 이름으로

<select name='test'> 
<option value='1;imgA.png'>1</option> 
<option value='2;imgB.png'>2</option> 
</select> 

을 값을 증가 그리고 필요에 따라 숫자 값 또는 이미지 이름을 구문 분석 할 문자열 함수를 사용하는 수 있습니다.

+0

지도 또는 연관 배열은 실제로이 작업을 수행하는 가장 좋은 방법입니다. –

0

구분 기호로 구분하여 '값'입력란에 여러 값을 입력 할 수 있습니다. 당신은 값을 분할하고 이미지

<option value="1,dogs.jpg">1</option> 
<option value="2,hogs.jpg">2</option> 
<option value="3,cats.jpg">3</option> 
<option value="4,dogs.jpg">4</option> 
+0

확실히 가능 합니다만, 여분의 물건을 버리고 서버 측 코드에 부담을 주거나 양식 제출시이를 처리해야하는 것은 어려워 보입니다. 물론 서버 측 작업이 포함되어 있지 않다면 문제가되지 않습니다. – Pointy

+0

'value'속성에서 두 번째 매개 변수를 사용하는 방법은 무엇입니까? –

+0

Javascript 또는 C#에서 값 ...을 사용하는 위치에 따라 다릅니다. JavaScript에서는 값을 하위 문자열 배열로 분할 한 다음 생성 된 배열에서 두 번째 요소를 선택해야합니다. http://www.tizag.com/javascriptT/javascript-string-split.php C#에서는 같은 생각으로 split 메소드를 문자열에 사용합니다 : http://dotnetperls.com/string-split 그런 다음 배열에서 두 번째 요소를 선택하십시오. –

관련 문제