2016-10-01 2 views
0

그래서 난 내 HTML에 이들의 10을 가지고조건부에서 변수 사용이 작동하지 않습니까?

<div class="resultContainer"> 
    <div class="twitchResult" id="charionna"> 
     <a class="link" href="https://www.twitch.tv/charionna"target="_blank"> 
     <h3 class="username">charionna</h3> 
     <p class="streamInfo"></p> 
     </a> 
    </div> 
</div> 

나는 트 API에 요청을 할 때 :

var xhr = new XMLHttpRequest(); 
xhr.open('GET', 'https://api.twitch.tv/kraken/streams/comster404/?client_id=mlrx1e94dg7yus5yqm26lwpyxrg9j9x'); 
xhr.onreadystatechange = twitchInfo; 
xhr.send(); 

를 서버 내가이 아닌 200 상태 코드로 응답 응답 핸들러 함수는이 같은 callSuccessChecker 기능을 실행 :이 부분은 잘 작동하고

function twitchInfo() { 


    // request NOT succesful 
    if(this.readyState == 4 && this.status !== 200) { 

    // console.log('This is working'); 

    callSuccessChecker(); 

    } 
} 

.

문제는 callSuccessChecker입니다. 특히, 내가 조건부로 선언 한 변수를 사용합니다. 좋아요 :

function callSuccessChecker() { 

     var containerList = document.getElementsByClassName('resultContainer'); 
     var closedText = document.createTextNode('account closed'); 

     for (i = 0; i < 10; i++) {// <--------not working YET 

      if(containerList[i].style.backgroundColor == 'rgb(245, 209, 107)') { 

      containerList[i].children[0].children[0].children[1].appendChild(closedText); 
      } 
    // console.log (containerList[i].children[0].children[0].children[1]); 
    } 
} 

이 기능을 사용하면 맨 아래 console.log를 주석 처리 한 것을 볼 수 있습니다. 여기 containerList[i]을 사용하면 출력이 콘솔에 표시됩니다.

if 문과 개체 내에서 (함수에서 볼 수있는 것과 동일한) 작업을 수행 할 때 올바른 용어가 무엇이든간에 작동/활성화/잡는 것 같지 않습니다. 이유에

.resultContainer { 
    height: auto; 
    margin-right: 10%; 
    margin-left: 10%; 
    margin-bottom: 0; 
    border-bottom: 1px white solid; 
    background-color: #F5D16B; 
} 

모든 설명 : 여기에

가 backgroundColor로 내가 조건에 대해 확인하기 위해 노력하고있어 컨테이너의 스타일이다 (나는 조건에서의 RGB 동등한에 16 진수 코드를 변환) 이것은?

해제 된 조건부 자체입니까?

도움을 주시면 대단히 감사하겠습니다.

+0

당신은'consol.log()를 사용해 본 적이있다'는'if' 조건을 충족하는 경우 배경색이 볼 수 있도록? – mseifert

+0

Javascript는 브라우저에 따라 16 진수 색상, 대개 RGB를 반환하는 경우는 거의 없으므로 이러한 검사는 수행하지 않아야합니다. – adeneo

+0

@adeneo - 아, 콘솔에서 RGB를 반환했음을 알았고 16 진수에서 RGB로 변경해야한다는 것을 알았지 만, 지금 당장 생각 나게 할 때까지 내 마음이 누그러졌다. 나는 그렇게하고 나서 그것을 바꿔서 갱신 할 것이다. – Edson

답변

0

색상 값의 편차의 문제가있을 수 있습니다. 방법에 대해 : console.logs의이 블록은 체인의 오브젝트가 파괴되는 위치를 결정하는 데 도움이해야

function isEqualColor(a, b) { 
    var elementA = document.createElement("div"), 
     elementB = document.createElement("div"); 
    elementA.style.backgroundColor = a; 
    elementB.style.backgroundColor = b; 
    return elementA.style.backgroundColor == elementB.style.backgroundColor; 
} 

function callSuccessChecker() { 
    var containerList = document.getElementsByClassName('resultContainer'); 
    var closedText = document.createTextNode('account closed'); 

    for (i = 0; i < 10; i++) { 
     if(isEqualColor(containerList[i].style.backgroundColor, '#F5D16B')) { 
      containerList[i].children[0].children[0].children[1].appendChild(closedText); 
     } 
     console.log(containerList[i].children[0].children[0].children[1]); 
    } 
} 
+0

아니,하지만 노력해 주셔서 감사합니다. 나는 "appendChild"를 사용하는 것과 관련하여 어떤 에러도 발생하지 않으며, 16 진수 코드에 대한 주석에서 위에 언급 한 adeneo 외에 문제는 변수 "containerList"가 조건부 또는 조건부 오브젝트에서 작동하지 않는 것으로 보입니다. – Edson

+0

그것을 확인해보십시오 :) – PsychoX

+0

나는 잡히고있다 : "Uncaught ReferenceError : 테스트가 정의되지 않았다" – Edson

0

:

if(containerList[i].style.backgroundColor == 'rgb(245, 209, 107)') { 
    console.log(containerList[i]); 
    console.log(containerList[i].children[0]); 
    console.log(containerList[i].children[0].children[0]); 
    console.log(containerList[i].children[0].children[0].children[1]); 
    containerList[i].children[0].children[0].children[1].appendChild(closedText); 
} 

비 - 널 (null)이 인쇄 밖으로 모두 다음 appendChild()가 작동해야합니다.

또한과 같이, backgroundColor을 읽는 다른 방법을 시도 할 수 있습니다 :

if(containerList[i].currentStyle['background-color'] == 'rgb(245, 209, 107)') { 
    //... 
} 
+0

"if"객체 내부에서 사용할 때 아무 것도 출력하지 않습니다. 즉, 조건이 충족되지 않았다는 것을 의미합니까? ... 그리고 문제는 여전히 "containerList [i]"입니다 ... 콘솔의 "if"객체 바깥 쪽에서 작업하고 모두 null이 아니므로 출력하므로 appendChild()가 정상적으로 작동합니다. – Edson

+0

@Edson Yes는 if 조건이 충족되지 않음을 의미합니다. if() 명령문 앞에'console.log (containerList [i] .style.backgroundColor);'를 써서 if를 검사하기 전에 색상을 관찰하고 조건이 충족되는지 수동으로 결정하십시오. – JLewkovich

+0

작동하는 것처럼 보이지만 속성 값을 표시하는 대신 공백으로 표시됩니다. 콘솔에서 backgroundColor 값을 얻으려고 할 때마다 예외가있었습니다. 코드가 동일했기 때문에 예외적이었습니다. – Edson

관련 문제