2014-09-01 35 views
0

我有一個JavaScript方法的Javascript的ReferenceError同時傳遞路徑

function addData(path) 
{ 
    //logic here 
} 

,我叫它爲

<a id="dataSource" title="Add Data" href="javascript:addData(abc)"> 

這給了我錯誤

[01:23:10.432] ReferenceError: abc is not defined @ javascript:addData(abc):1 

令人驚訝的是讓我做像

<a id="dataSource" title="Add Data" href="javascript:addData(123)"> 

那麼這裏應該做什麼?我試着做

<a id="dataSource" title="Add Data" href="javascript:addData('abc')"> 

,但它被轉換爲

<a id="dataSource" title="Add Data" href="javascript:addData(&apos;abc&apos;)"> 

,然後給了我語法錯誤

[01:29:07.212] SyntaxError: syntax error @ javascript:addData(&apos;abc&apos;):1 

使用onclick代替href也具有同樣的效果。

我想要的路徑傳遞到如果你想傳遞一個字符串,那麼你應該做這樣它會像/package/version/1.0/data

+0

「它得到轉換」......通過什麼? – Ryan 2014-09-01 20:06:48

+0

所以,你想傳遞一個字符串文字。用撇號括起字面應該是有效的。當你說,「它被轉換了」,在這個過程中轉換髮生在哪裏? – 2014-09-01 20:07:10

+0

我正在做「檢查元素」並在瀏覽器中添加值。只要按下輸入鍵,它就會被轉換。 – 2014-09-01 20:07:32

回答

1

你應該附加一個單擊處理程序,或者,如果你必須使用onclick屬性調用JS功能。

<a id="dataSource" title="Add Data" href="javascript:addData(abc)"> 

不起作用,因爲abc是一個變量。這顯然不存在。

<a id="dataSource" title="Add Data" href="javascript:addData(123)"> 

這是可行的,因爲123是一個整數(數字)文字。

<a id="dataSource" title="Add Data" href="javascript:addData('abc')"> 

出於安全原因,此字符串會自動編碼。如果必須以這種方式傳遞它,則需要轉義字符串文字。我發現我不需要對onclick做任何事情,這將工作得很好。在這裏看到:http://plnkr.co/edit/s5Mxz8KPYcUypEkY0qdX?p=preview

這應該只是罰款:

<button id="dataSource" onclick="addData('abc')">Add</button> 

希望幫助。

+0

我們如何逃避繩子? – 2014-09-01 20:18:28

+0

@AniketThakur我不需要用onclick來逃避它。這不適合你嗎? http://plnkr.co/edit/s5Mxz8KPYcUypEkY0qdX?p=preview – Antiga 2014-09-01 20:19:47

+0

@AniketThakur我編輯添加一個簡單的按鈕,以幫助顯示你想我的意思。如果您只是以這種方式使用onclick,則不必擔心會轉義任何內容。 – Antiga 2014-09-01 20:30:12

1

方法:

addData(\""+abc+"\") 

如果你想傳遞一個變量只是addData(abc)應該沒問題。
使用數字,它的工作原理是因爲您沒有名爲「abc」的變量,所以沒關係。

我建議你這樣做:

<a href="" onClick="addData(whatdoyouwant)">Link</a> 
1

做的最好的辦法,是這樣的:

<a onClick="addData('SomePath')" href="#">Link</a> 

換句話說,使用的onClick事件,而不是的javascript:網址,並使用單引號

包裝您的路徑

I set up this fiddle for you to see it in action

0

呀張貼的所有答案都是正確的,但我們可以通過href也做到這一點。

<a href='javascript:addData("${dataPath}")' id='dataPathId' title="${dataTitle}"> 

我不需要任何字符轉義。雖然在js中再次用相同的方法做類似的事情,但我不得不像

function addData(path) 
{ 
//logic 
dataNode.childNodes[i].href = "javascript:addData(\"" + path + "\")"; 
//logic 
}