2012-02-04 2 views
1

요소를 구문 분석하고 통화 단위로 영역을 설정하고 싶습니다.달러 기호 (자바 스크립트 문자열)

HTML :

<span id="price">¥82,84</span><br/> 

자바 스크립트 :

 price = document.getElementById("price").innerHTML; 
     price = price.slice(0,1); 

     if(price == "€") 
     { 
      area = "europe"; 
     } 
     if(price == "£") 
     { 
      area = "europe"; 
     } 
     if(price == "\$") 
     { 
      area == "northamerica"; 
     } 
     if(price == "\¥") 
     { 
      area == "asia"; 
     } 

유로와 파운드가 작동하지만, 엔 및 달러되지 않습니다. 누구나 아이디어가 있습니까?

+6

왜 비교에 백 슬래시가 있습니까? –

답변

9

.

7

.innerHTML&dollar;을 반환 할 수 있습니다. 대신 .textContent 또는 .innerText을 사용하십시오. 또한 price은 두 개의 다른 문자가 될 수 없으므로 복수 if 대신 중첩 된 else if을 사용하는 것이 좋습니다.

오류 자체는 달러와 위안 블록에 있습니다. = 대신 ==을 사용하고 있습니다.

  • 스위치 블록 :

    price = document.getElementById("price").textContent; // or innerText for IE 
        price = price.charAt(0); // equal to .slice(0,1); 
    
        if(price == "€") { 
         area = "europe"; 
        } else if(price == "£") { 
         area = "europe"; 
        } else if(price == "$") { 
         area = "northamerica"; 
        } else if(price == "¥") { 
         area = "asia"; 
        } else { // Default 
         area = "Unknown"; 
        } 
    

    다른 두 가지 방법이 있습니다

    switch(price) { 
        case '€': case '£': 
         area = 'europe'; 
        break; 
        case '$': 
         area = 'northamerica'; 
        break; 
        case '¥' 
         area = 'asia'; 
        break; 
        default: 
         area = 'unknown'; 
    } 
    
  • 해시 :

    var price = document.getElementById("price").textContent; //or innerText (IE) 
    price = price.charAt(0); 
    var priceToArea = { 
        '€': 'europe', 
        '£': 'europe', 
        '$': 'northamerica', 
        '¥': 'asia' 
    }; 
    var area = priceToArea[price] || 'Unknown'; //Default Unknown 
    
+0

예기치 않은 출력을 캡쳐하려면 첫 번째 블록에'else {area = 'N/A';}'를 추가하고'switch '블록에'default : area ='N/A ' var area = priceToArea [price] || 해시 - 메서드에서 'N/A'. –

+0

당신이 쉼표를 여기에 놓친 것 같아요. ''$ ':'northamerica '' – ajax333221

+0

@ ajax333221 멋지게 발견되었고, 지금 고쳐졌습니다. –

2

은 또한 Rob W's answer에 나는 또한 명확성을 위해 switch 문을 사용 : 당신은 할당 연산자 =를 사용해야 문에서 평등 비교 ==을 사용하는

switch (price) 
{ 
    case "€": 
    case "£": 
     area = "europe"; 
     break; 
    case "$": 
     area = "northamerica"; 
     break; 
    case "¥": 
     area = "asia"; 
     break; 
} 
관련 문제