2013-07-20 3 views
3

제품 목록이 있으며 입력 매개 변수로 productlist를 검색하고 싶습니다. 그래서 productlist의 입력 문자열을 scarching하기 위해 contains을 사용하고있었습니다. 그것의 웹 페이지와 잘 작동합니다. 하지만 모바일 웹 페이지에서 동일한 페이지를 열면 작동하지 않습니다. 정의에 '포함'한다는 오류를 표시합니다.'.contains'는 안드로이드 폰에서 작동하지 않지만 웹 페이지에서는 잘 작동합니다.

if(productlist[i].name.toLowerCase().contains(input_val.toLowerCase())) 

    --my business logic-- 

그 후 indexOf로 시도한 다음 두 경우 모두 잘 처리합니다.

if(productlist[i].name.toLowerCase().indexOf(input_val.toLowerCase()) !== -1) 
    --my business logic -- 

.contains ??

+1

아마도 귀하의 andriod 브라우저가이 기능을 지원하지 않습니까? 그냥'indexOf'를 사용하십시오. 그리고 당신은'eval'을 무엇을 사용하고 있습니까? – Shawn31313

+1

Shawn이 정확한지, Mozilla에 따르면 Android는 포함되지 않습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains – JConstantine

+1

.contains는 JavaScript 하모니 기능 (ES6/ES.next)입니다. 그러나 자신 만의'contains' 함수를 만들 수 있습니다. 'String.prototype.contains = function() {...};' – Shawn31313

답변

2

사용이 Polyfill (참조 : MDN) 내가 사용하는 수에

if(!('contains' in String.prototype)) { 
    String.prototype.contains = function(str, startIndex) { 
     return -1 !== String.prototype.indexOf.call(this, str, startIndex); 
    }; 
} 

는 업데이트 ... Compatibility table를 참조하십시오이 또한 당신은 this answer을 확인할 수있다.

+0

@ Shawn31313, 맞습니다.하지만 질문은''.contains ''가 아닙니다. 안드로이드 폰에서 작동하지만 웹 페이지에서 정상적으로 작동합니다. –

관련 문제