다음 코드는 Chrome에서 문제없이 실행될 수 있지만 Internet Explorer 11에서는 다음 오류가 발생합니다.
객체가 속성 또는 메소드 ‘startsWith’를 지원하지 않습니다
요소의 ID를 변수에 저장하고 있습니다. 이슈가 뭐야?
function changeClass(elId) {
var array = document.getElementsByTagName('td');
for (var a = 0; a < array.length; a++) {
var str = array[a].id;
if (str.startsWith('REP')) {
if (str == elId) {
array[a].style.backgroundColor = "Blue";
array[a].style.color = "white";
} else {
array[a].style.backgroundColor = "";
array[a].style.color = "";
}
} else if (str.startsWith('D')) {
if (str == elId) {
array[a].style.backgroundColor = "Blue";
array[a].style.color = "white";
} else {
array[a].style.backgroundColor = "";
array[a].style.color = "";
}
}
}
}
<table>
<tr>
<td id="REP1" onclick="changeClass('REP1');">REPS</td>
<td id="td1"> </td>
</tr>
<tr>
<td id="td1"> </td>
<td id="D1" onclick="changeClass('D1');">Doors</td>
</tr>
<tr>
<td id="td1"> </td>
<td id="D12" onclick="changeClass('D12');">Doors</td>
</tr>
</table>
답변
String.prototype.startsWith
가장 최신 버전의 JavaScript 인 ES6의 표준 방법입니다.
아래 호환성 표를 보면 Internet Explorer 버전을 제외한 모든 현재 주요 플랫폼에서 지원되는 것을 알 수 있습니다 .
╔═══════════════╦════════╦═════════╦═══════╦═══════════════════╦═══════╦════════╗
║ Feature ║ Chrome ║ Firefox ║ Edge ║ Internet Explorer ║ Opera ║ Safari ║
╠═══════════════╬════════╬═════════╬═══════╬═══════════════════╬═══════╬════════╣
║ Basic Support ║ 41+ ║ 17+ ║ (Yes) ║ No Support ║ 28 ║ 9 ║
╚═══════════════╩════════╩═════════╩═══════╩═══════════════════╩═══════╩════════╝
.startsWith
자신 을 구현해야합니다 . 다음은 polyfill입니다 .
if (!String.prototype.startsWith) {
String.prototype.startsWith = function(searchString, position) {
position = position || 0;
return this.indexOf(searchString, position) === position;
};
}
답변
text.indexOf("newString")
대신 가장 좋은 방법입니다 startsWith
.
예:
var text = "Format";
if(text.indexOf("Format") == 0) {
alert(text + " = Format");
} else {
alert(text + " != Format");
}
답변
이 경우 각도 2+ 응용 프로그램에서 어떤 일이 일어나고을 수행 할 수 있습니다 단지 주석 의 문자열 polyfills polyfills.ts :
import 'core-js/es6/string';
답변
startsWith 기능을 다음과 같이 바꾸십시오.
yourString.indexOf(searchString, position) // where position can be set to 0
이것은 IE를 포함한 모든 브라우저를 지원합니다
시작 위치 0부터 문자열 일치를 위해 위치를 0으로 설정할 수 있습니다.
답변
다른 사람들이 말했듯이 startsWith와 endsWith는 ES6의 일부이며 IE11에서는 사용할 수 없습니다. 우리 회사는 항상 lodash 라이브러리를 IE11의 폴리 필 솔루션으로 사용합니다. https://lodash.com/docs/4.17.4
_.startsWith([string=''], [target], [position=0])
답변
오카의 게시물은 훌륭하게 작동하지만 약간 구식 일 수 있습니다. lodash 가 하나의 단일 기능으로 해결할 수 있다는 것을 알았 습니다. lodash를 설치 한 경우 몇 줄을 절약 할 수 있습니다.
단지 시도:
import { startsWith } from lodash;
. . .
if (startsWith(yourVariable, 'REP')) {
return yourVariable;
return yourVariable;
}
}
답변
나는 또한 최근 조사에 직면했다. 에서 시작하는 것과 비슷한 ^를 사용하여 해결했습니다
jquery
. 말하다,
var str = array[a].id;
if (str.startsWith('REP')) {..........}
우리는 사용할 수 있습니다
if($("[id^=str]").length){..........}
여기서 str은 요소의 id입니다.