2011-09-12 3 views
1

IE7을 사용하고 있는데 텍스트의 선행 공백없이 선택 태그에 옵션이 표시되는 것처럼 보입니다. 텍스트가 잘린 것처럼 보입니다. 예를 들어, 아래의 HTML 코드 블록에서 옵션 1 ~ 3은 텍스트 앞에 3 개의 공백이 있지만 브라우저를 표시 할 때 트림을 수행하는 것으로 보이며 선행 공백없이 사용자에게 표시합니다.브라우저가 SELECT 태그 내에 목록 텍스트의 공백을 표시하지 않습니까?

코드 블록 1 :

<select size="3"> 
    <option value="1"> aaa</option> 
    <option value="2"> bbb</option> 
    <option value="3"> ccc</option> 
    <option value="4">ddd</option> 
    <option value="5">eee</option> 
</select> 

또한 당신이 자바 스크립트를 통해 옵션의 텍스트를 액세스 할 때, 반환 값도 손질 것 같다.

코드 블록 2 :

var value = list.options[i].text; 

뿐만 아니라 공간을 표시 할 브라우저를 강제 할 수있는 방법이 있나요 아니면 내가 함께 붙어이 뭔가? 대신 공간의

답변

8

사용 &nbsp; :

<select size="3"> 
    <option value="1">&nbsp;&nbsp;&nbsp;aaa</option> 
    <option value="2">&nbsp;&nbsp;&nbsp;bbb</option> 
    <option value="3">&nbsp;&nbsp;&nbsp;ccc</option> 
    <option value="4">ddd</option> 
    <option value="5">eee</option> 
</select> 

=== 업데이트 ===
이 또한 내 jsfiddle를 참조하십시오.

1

잘 모르지만 시도해보십시오. &nbsp; 그냥 공백 대신

0

option 텍스트에서 공백을 제거하는 브라우저 동작입니다. innerHTML은 "보존되어 있습니다"라는 사실을 알게되었으므로 HTML을 일반 공백으로 그대로 유지 한 다음이 JS를 추가하면됩니다. :

window.onload = function() { 
    var dropDownLists = document.getElementsByTagName("select"); 
    for (var i = 0; i < dropDownLists.length; i++) { 
     var oDDL = dropDownLists[i]; 
     for (var j = 0; j < oDDL.options.length; j++) { 
      oDDL.options[j].innerHTML = oDDL.options[j].innerHTML.replace(/ /g, "&nbsp;"); 
     } 
    } 
}; 

이것은 HTML 엔터티가있는 공간을 대신합니다.

Live test case.

+1

"브라우저 동작"은 [W3C에서 지정한 공백 처리] (http://www.w3.org/TR/html401/struct/text.html#whitespace)입니다 :'특히 사용자 에이전트 저자는 출력 단어 간 공간을 생성 할 때 입력 공백 시퀀스를 축소해야합니다. 작성자는 시작 태그 바로 뒤에 공백을 렌더링하거나 종료 태그 바로 앞에 공백을 렌더링하는 데 사용 도구를 사용해서는 안됩니다. – RobG

+0

감사합니다 롭,이 인식하지 못했습니다. :) –

관련 문제