2017-11-24 5 views
0

'slide'에 html 출력을 위해 나중에 파싱 된 (parseInt) 배열의 가격 값 (유로 기호가있는 문자열)을 잡는이 슬라이더가 있습니다. 이것은 잘 작동합니다. 출력에 숫자와 심볼을 얻습니다.하지만이 값을 곱해야 할 필요가있을 때, 출력에 숫자 나 기호가 없습니다. 그래서 parseInt 수학 연산자없이 제대로 작동하는 것 같아요 ...? 나는 비슷한 문제에 대한 serached했지만 어떤 해결책을 찾을 수 없습니다 그리고 그것은 단지 더 혼란 스러울거야 ... 아무도 내가 누락 된 말할 수 있을까? 코드 :Javascript : parseInt 문제는 ​​수학 연산자의 경우

var priceStarter = [ 
     '149€', 
     '199€', 
     '249€', 
     '399€', 
     '599€', 
     '999€', 
    'Contact Us', 
    ]; 


    slider.on('slide', function (values, handle) { 
     if(jQuery(this).hasClass('active-anual')){ 
     //ANUAL 
      var anualStarter = priceStarter[parseInt(handle)]; 
      priceValueStarter.html(anualStarter * 10); //ISSUE HERE 

     } 
     else { 
     //MONTHLY 
     priceValueStarter.html(priceStarter[parseInt(handle)]); //WORKS 

     } 
    }); 

    //TOGGLE ANUAL/MONTHLY 
    anual.on('click',function(){ 
     jQuery(this).toggleClass('active-tab'); 
    monthly.removeClass('active-tab'); 
     slider.addClass('active-anual'); 
    }) 
    monthly.on('click', function() { 
     jQuery(this).toggleClass('active-tab'); 
    anual.removeClass('active-tab'); 
     slider.removeClass('active-anual'); 
    }) 
    } 

편집 :

console.log(anualStarter) 나에게 올바른 값을 제공하지만,이 console.log(anualStarter*10) 나에게주는 NaN의

이 편집 : Constantiner의 답변에 따라, 나는 숫자를 얻을하지만 난 여전히 유로를 풀어 기호 및 당사에 문의 할 때

slider.on('slide', function (values, handle) { 
    if (jQuery(this).hasClass('active-anual')) { 
    //ANUAL 
    var anualStarter = priceStarter[parseInt(handle)]; 
    priceValueStarter.html(parseInt(anualStarter)*10); 


    } else { 
    //MONTHLY 
    priceValueStarter.html(priceStarter[parseInt(handle)]);  
    } 
}) 

;

+0

당신이 handle''의 가치를 확인 했 :

난 당신이 다음과 같은 몇 가지 코드를 작성할 계획 가정? 'priceStrarter'에'parseInt (handle) '인덱스에 요소가 있습니까? –

+0

이'console.log (anualStarter)'는 나에게 정확한 값을 주지만,이'console.log (anualStarter * 10)'은 NaN – Mellville

답변

1

priceStarter[parseInt(handle)]"249€"과 같은 문자열입니다. 따라서 anualStarter * 10 ("249€" * 10)은 사용할 수 없습니다. NaN입니다. 대신 parseInt(anualStarter) * 10을 사용해보십시오.

약간의 설명. "249€" * 10을 사용하려고하면 JavaScript 엔진이 "249 €"문자열을 숫자로 형 변환하려고 시도하며이를 정수 또는 다른 것으로 해석하지 않습니다. 따라서 "249€" * 10Number("249€") * 10과 같고 Number("249€")NaN입니다. 당신이 그것을 구문 분석 할 때

slider.on('slide', function (values, handle) { 
    if(jQuery(this).hasClass('active-anual')){ 
     //ANUAL 
     var anualStarter = priceStarter[parseInt(handle)]; 
     priceValueStarter.html(isNaN(parseInt(anualStarter)) ? anualStarter : parseInt(anualStarter) * 10 + "€"); //ISSUE HERE 

    } 
    else { 
     //MONTHLY 
     priceValueStarter.html(priceStarter[parseInt(handle)]); //WORKS 

    } 
    }); 
+0

을 준다. 배열에서 유로 기호를 제거 할 때만 작동하고, 슬라이더가 "Contact US"배열 위치에는 아무것도 표시되지 않습니다. 하지만 작동하지 않고, 잘 작동 ... – Mellville

+0

나에 의해 수정 된 약간의 코드로 내 대답을 업데이 트했습니다. – Constantiner

+1

나는이 작업을 이미 할 수 있었고 그 해결책은 매우 비슷하다. 똑같은 논리이지만 코드가 더 우아하다. 그래서 고마워. – Mellville