2013-07-07 111 views
-1

在JavaScript中,您可以有多種方法將字符串傳遞給函數。但是哪一個是最正確的方法呢?將字符串傳遞給javascript函數的正確方法是什麼?

eg 1 <a onclick='myfunction("mystring")'>1</a> 
eg 2 <a onclick="myfunction('mystring')">1</a> 

編輯 我不認爲這是一個重複的問題,值得一downvote。這個問題是在一個JavaScript內處理code。這是關於從HTML到代碼的調用。

+0

是什麼讓你覺得有一個「最正確」的方式? –

+0

我會使用後者 - HTML中的屬性值建議使用雙引號,所以堅持。理想情況下,雖然你的JS應該在一個單獨的文件 – Bojangles

+1

你傳遞一個字符串像任何其他參數(它並不重要的參數是什麼值)。如果你問是否應該使用''''或'''作爲字符串文字,那麼無關緊要(只要最終的源代碼有效)。 –

回答

2

的老辦法是

<a onclick="myfunction('mystring')">1</a> 

但這有很多限制。

我覺得通過字符串(變量)的JavaScript最正確的方法是這樣的:

與clickevents交互的新方法是在你的JavaScript代碼添加事件監聽器。

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title></title> 
<script> 
window.onload=function(){ 
var handler=function(e){//define your function (click handler) 
    console.log(e,this);// contains the event details and the clicked element details 
} 
var a=document.getElementsByTagName('a')[0]; // with this line i get the first a 
a.addEventListener('click',handler,false);// add the click lisstener 
} 
</script> 
</head> 
<body> 
<a>1</a> 
</body> 
</html> 

所以現在你剛剛要找出何處是storeyour在<a>1</a>

字符串中的標題

<a title="mystring">1</a> 

讓你處理這些信息你剛剛有最好的地方寫this.title得到字符串

裏面的錨點

<a>mystring</a> 

讓你處理這些信息ü只需要編寫this.innerText得到字符串

還有存儲中調用數據集

<a data-string="mystring">1</a> 

得到這個信息元素的信息的新方式在你的處理程序中,你只需要寫this.dataset['mystring']得到字符串

就像我說的,它也傳遞了事件的細節......裏面你可以找到元素。

最常見的方式是目標:

e.target.title 

e.target.innerText 

e.target.dataset['string']; 

使用此addEventListeners允許您添加多發點擊事件......,或在其他方面,它可以讓你處理多個元素與點擊。

2

兩者都是完全可以接受的變化,只是與您用於最外面的報價的內容保持一致。我更喜歡JS中的單引號。

+0

這是不正確的,請參閱我上面的評論。 –

1

兩者基本相同。當編碼內嵌屬性我更喜歡使用的第二個版本,因爲使用了雙引號的屬性是比較常用的:

<img src="path/to/image"> 

在純JavaScript代碼,那不是裏面內嵌HTML單串和雙字符串是完全等價(不同於PHP或Perl雙引號進行插值),所以只需選擇一個約定。我更喜歡在默認情況下使用單引號,並使用雙引號,表明暴露於用戶的字符串(這些字符串可能需要在未來的翻譯,等等)

相關問題