2013-08-03 3 views
2

작동하지 않습니다하지만 더 출력은 다음 표시되지되고있는 것은 내 JS 코드 : - 자바 스크립트 lastIndexOf에서도 나는 순수 자바 스크립트 에 lastIndexOf에서도 함수를 사용하여 URL에서 fakepath을 제거하기 위해 노력하고

function myFunction() 
{ 
var str="C:\fakepath\somefile.txt"; 
var m=str.lastIndexOf("\"); 
var n=str.substring(m+1); 
document.getElementById("demo").innerHTML=n; 
} 

다음

내 HTML 코드입니다 -

<p id="demo"> 
    Click the button to locate where in the string a specified value occurs. 
</p> 
<button onclick="myFunction()">Try it</button> 

당신은 나의 jsfiddle에서 작업 예를 찾을 수 있습니다 ->http://jsfiddle.net/xKPaK/4/

+1

음, "u는"결코 'C : \ fakepath \ somefile.txt "발생 없다는 사실 ... 그것으로 할 수있는 뭔가가 있습니다 – AlliterativeAlice

+0

@Otome I 내 피들을 편집 했는데도 작동하지 않습니다 ... 편집 된 링크보기 – h2O

+3

정확한 코드를 여기에 넣으면 안됩니다. 문제는 jsFiddle의 구문 강조 표시에서 쉽게 발견 할 수 있습니다. "\"가 이스케이프되어야하지만 그게 유일한 문제인지 확실하지 않은 경우 ... – elclanrs

답변

1
  1. \ 문자는 이스케이프해야합니다.
    문자열에 특수 문자를 만드는 데 백 슬래시가 사용됩니다. 예를 들어, '\n'은 줄 바꿈 문자의 값으로 문자열을 만들고, '\\n'\n의 값을 갖는 문자열을 만듭니다.
  2. myFunction은 HTML 속성 콜백에서 전역 범위가 호출되어야합니다.
    이것은 jsfiddle의 버클입니다. JavaScript pane의 내용은 실제로 변수와 함수에 대한 새로운 범위를 만드는 함수 내에서 실행됩니다. 전역 개체에 함수를 추가하기 만하면 문제가 해결됩니다.
function myFunction() { 
    var str, 
     m, 
     n; 
    str = "C:\\fakepath\\somefile.txt"; 
    m = str.lastIndexOf("\\"); 
    n = str.substring(m + 1); 
    document.getElementById("demo").innerHTML = n; 
} 
window.myFunction = myFunction; 

fiddle

+0

문제는 'C : \ fakepath \ somefile.txt'가 아닌 'C : \\ fakepath \\ somefile.txt'와 같은 문자열을 사용하는 것입니다. – h2O

+0

@BenLind, 아니요, 정말로 하지마. 당신은'C : \ fakepath \ somefile.txt'라는 문자열 * value *을 가지고 있습니다 만, 그것을 문자열 * 리터럴 *로 표현하기 위해서는''\''문자를 이스케이프해야합니다. 'alert ("C : \\ fakepath \\ somefile.txt")를 호출하면 더 이해할 수 있습니다. – zzzzBov

+0

@zzzzBov 그가 텍스트 파일이나 자바 스크립트를 통해 URL 바에서이 문자열을 읽는 경우 자바 스크립트에서 이스케이프 처리되지 않은 문자를 변수에 할당할까요? 나는 많은 JavaScripting을 해왔지만, 어떤 이유 때문에 결코 잘리지 않았다. 신은 방법을 알고있다. – shennan

관련 문제