2016-11-05 3 views
4

나는 자바 스크립트와 body의 bcakground를 변경하려고 다음과 같은 작동하지 않는 것으로 관찰되었다 :왜 스타일 속성에서 자바 스크립트를 통해 세미콜론을 삽입 할 수 없습니까?

document.body.style.background = "#000;" 

을하지만 다음 세미콜론 ommit 경우 작동 :

document.body.style.background = "#000" 

은 왜이다 그래서? #000; 여전히 문자열이 아닌가요?

+0

아직 문자열이지만 잘못된 값입니다. – vlaz

+0

은'# 000;'background'의 유효한 값입니까? 'background-color : # 000 ;; ' –

+0

그러면 자바 스크립트는'background : # 000' 다음에 자동으로';'를 넣을까요? – user31782

답변

-1

# 000으로 배경 스타일을 설정할 때; 그것은 배경을 출력합니다 : # 000 ;; 이것은 적절한 CSS 규칙이 아닙니다.

6

;은 값의 일부가 아닙니다. 그것은 스타일 구분 기호입니다. the spec 가입일

selector { 
    styleName: styleValue; 
    /* Separator --------^----- */ 
} 

:

규칙 세트 (또한 소위 "규칙") 선언 블록 뒤에 선택기로 구성된다.

선언 블록은 왼쪽 중괄호 ({)로 시작하고 일치하는 오른쪽 중괄호 (})로 끝납니다. 사이에 0 이상의 목록이 있어야합니다. 세미콜론으로 구분 된 (;) 선언이 있어야합니다.

두 번째 예 (; 제외)는 정확합니다. 첫 번째 예제에서는 #000; 값이 유효하지 않으므로 스타일을 설정하지 못하므로 해당 값을 무시합니다.

+0

여러 스타일을 추가해야한다면 수동으로';'를 삽입해야한다고 생각했습니다. 예 : document.body.style.background = "# 000"''document.body.style.width = "100px"'이면 출력은'''# 000' 다음에 세미콜론이 없습니다. 하지만 javascript는 여러 스타일이 추가 될 때 자동으로 세미콜론을 삽입하는 것처럼 보입니다. – user31782

+2

@ user31782 : CSS 블록을 스타일 값과 혼동스럽게 생각합니다. elements의'style' 속성은 개별 값에 대한 속성을 가진 객체입니다. 구분 기호는 필요하지 않으며 개별 속성입니다. "JavaScript"는 세미콜론을 삽입하지 않습니다. 속성을 설정하는 중입니다. 요소로부터'style' * 속성 *을 얻으면 브라우저는 직렬화 된 결과를 임베디드 세미콜론으로 올바르게 렌더링합니다. –