2012-05-17 2 views
2

이것은 바보 같은 질문 일 수 있지만이 슈퍼 스크립트를 작동시키지는 못합니다. 불투명도를 0.1로 줄이는 버튼이 필요합니다. 클릭 할 때마다자바 스크립트에서 불투명도 빼기

나는이 모든 것을 시도했다.

var timesTen = x.style.opacity*10; 
timesTen--; 
timeTen/10; 
x.style.opacity=timesTen; // This gives opacity of 0; 

나는이 문제에 대한 대답은 사업자의 이해의 부족과 함께 할 수있는 뭔가가 기대 :

x.style.opacity-.3; //This doesn't work. Doesn't do anything. 
x.style.opacity=.3; //This gives me an opacity of .3. 
x.style.opacity-=.3; //This gives an opacity of 0. Why? 
x.style.opacity--; //This will give opacity of 0 as expected. 

는 난이 시도했다. 하지만 산술 자습서의 골짜기를 보았습니다 그리고 그들은 모두 완벽하게 나를 위해 일하는 정수 예제로 가득 차있 보입니다. 나는 그 중 일부를 붙여 넣기 복사하고 숫자가 변경된 경우에만 작동을 멈추는 것을 발견했습니다. 이것이 멍청한 질문이라면 유감 스럽습니다 (확신합니다). 고마워요

+1

, 아직 이해하지 못하는 문 여기에 해결 방법이 있습니다. 'timeTen/10; '은 절대적으로 아무것도하지 않습니다. – Blindy

+0

감사합니다. 그 메모에. 나는 조금 절망적이었다. 나는 임의의 조합을 시도하기 시작했다. 예, 일부는 오히려 무의미한 것처럼 보였습니다. – ojcruz

답변

2

테스트를 마친 후에는 불투명도를 먼저 설정 한 다음 읽을 수 있습니다.

​<div id="x" style="opacity:1.0">Hello</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

​x.style.opacity -= 0.3;

위에서 다음과 같이 쓸 표준의 일부가 아니다 (도 파이어 폭스, 작동) 이유는

document.getElementById("x").style.opacity -= 0.3;

를에 첨가하는 경우 불투명도, parseFloat이 필요합니다. 그렇지 않으면 문자열 연결이 발생합니다. 또는 -= -0.3이라고 쓰십시오 :)

+0

감사합니다. 내가 잘못 저지른 곳을보고있는 것처럼 보입니다. – ojcruz

+0

당신은 환영합니다. 이유를 설명하는 방법을 모르겠지만 ID로 요소에 액세스하는 데 document.getElementById가 훨씬 더 많이 사용되는 것을 볼 수 있습니다.또한 jQuery가 있습니다. –

+0

@ojcruz 불투명도에 더하면 parseFloat를 사용해야합니다. css를 읽으면 문자열이 반환되고 string + number가 clumped 문자열로 연결되기 때문에 발생했습니다. –

3
x.style.opacity = parseFloat(x.style.opacity) - 0.1; 

왜 그렇게 어려운가요?

+5

모든 CSS 속성이 Javascript에 문자열로 노출되어 있음을 알고 싶습니다. * 거의 올바른 해결책입니다. (''parseInt''가 아닌''parseFloat''가되어야합니다.) –

+0

안녕하세요. 고맙습니다. 그러나 이것들은 효과가 없습니다. – ojcruz

+0

나는 parseFloat()을 의미한다고 생각한다. –

1

x.style.opacity 속성이 현재 없기 때문에 작동하지 않습니다. CSS 덕분에 적용되었습니다.

HTML :

<div id="t" style="background: black; opacity: 1;">Hello</div> 
<div id="c" style="background: black;">Hello</div> 

JS :

document.getElementById('t').onclick = function() { 
    // This works 
    this.style.opacity = this.style.opacity - 0.1; 
}; 
document.getElementById('c').onclick = function() { 
    var opacity = this.style.opacity; 
    // If the property exists, just decrement it 
    if (opacity) { 
     opacity -= 0.1; 
    } 
    // Else, set it (it will only be set once) 
    else { 
     opacity = 0.9; 
    } 
}; 

데모 : 자바 스크립트에서 http://jsfiddle.net/Ralt/xDFBY/ 보조 노트로

+0

Safari 및 Firefox에서 테스트를 마쳤습니다. 드레 네이버를 사용하고 있습니다. 이것은 가장 좋은 대답이 아니 었습니다. 내 질문이 어리석은 경우 사과드립니다. 문제는 인라인 스타일로 불투명도를 설정하는 것입니다. CSS 시트에서 전화하는 것이 문제였습니다. – ojcruz

+0

대답은 비꼬는 것이 아니 었습니다. 잘못했다면 유감스럽게 생각합니다. –

+0

질문에 답변했습니다. jsfiddle URL은 동일합니다. –

관련 문제