2013-08-03 38 views
2

我試圖從純JavaScript 使用lastindexof功能的URL刪除fakepath但正在顯示以下無輸出是我的JS代碼: -的Javascript lastIndexOf不工作

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我已編輯我的小提琴,但它仍然無法正常工作...請參閱編輯的鏈接 – h2O

+3

您應該在這裏確切的代碼沒有什麼不同。 jsFiddle中的語法突出顯示很容易找到您的問題。 「\」必須逃脫,但不知道如果這是唯一的問題... – elclanrs

回答

1
  1. \必須轉義字符
    反斜槓用於在字符串中創建特殊字符。例如,'\n'將創建一個字符串,其值爲換行符,而'\\n'將創建一個值爲\n的字符串。
  2. myFunction必須在全局範圍內才能在HTML屬性回調中調用。
    這是一個jsfiddle的怪癖。 JavaScript窗格的內容實際上是在一個函數內執行的,該函數爲變量和函數創建了新的範圍。只需將該函數添加到全局對象中即可解決問題。
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',但是將其表示爲一個字符串* literal *你必須轉義該字符。如果你調用alert(「C:\\ fakepath \\ somefile.txt」),它可能會更有意義。 – zzzzBov

+0

@zzzzBov出於興趣,如果他正在通過JavaScript從文本文件或url欄中讀取此字符串,那麼當將JavaScript分配給變量時,JavaScript會佔用非轉義字符嗎?我做了很多Java腳本,但由於某種原因,這從來沒有出現過。上帝知道如何。 – shennan