2010-11-13 10 views
44

क्या इन समाधानों के बीच कोई अंतर है?जावास्क्रिप्ट एलिमेंट वैल्यू

// HTML 
<input id="theId" value="test" onclick="doSomething(this.id, this.value)" /> 

// Javascript 
function doSomething(id, value){ 
    // ... 
} 

या

// HTML 
<input id="theId" value="test" onclick="doSomething(this.id)" /> 

// Javascript 
function doSomething(id){ 
    var value = document.getElementById(id).value; 
    // ... 
} 
+0

संपादित करें: जैसा कि कई ने बताया है, कुछ टाइपो हैं (जावास्क्रिप्ट में फ़ंक्शन नाम की कमी सहित), लेकिन अवधारणात्मक रूप से, वे वही हैं और कोई भी ठीक काम करेगा। – Jeff

उत्तर

55

हाँ, सबसे विशेष रूप से मुझे नहीं लगता कि एक दूसरे के काम करेंगे (और यह करता है, बहुत portably नहीं)। पहला एक ठीक होना चाहिए।

// HTML 
<input id="theId" value="test" onclick="doSomething(this)" /> 

// Javascript 
function(elem){ 
    var value = elem.value; 
    var id = elem.id; 
    ... 
} 

भी काम करना चाहिए

+0

यह तत्व सरणी के लिए भी जाता है। उदाहरण: 'आइटम [i] .id' – Taurib

28

दूसरा समारोह होना चाहिए:

var value = document.getElementById(id).value; 

तब वे मूलतः एक ही समारोह कर रहे हैं।

8

दूसरे संस्करण में, आप स्ट्रिंग को this.id से वापस कर रहे हैं। तत्व खुद नहीं है।

तो id.value आपको वह नहीं देगा जो आप चाहते हैं।

आपको this के साथ तत्व को पारित करने की आवश्यकता होगी।

doSomething(this) 
तो

:

function(el){ 
    var value = el.value; 
    ... 
} 

नोट: कुछ ब्राउज़रों में एक दूसरे अगर तुमने किया था काम करेगा:

window[id].value 

क्योंकि तत्व आईडी एक वैश्विक संपत्ति हैं, लेकिन यह सुरक्षित नहीं है

यह अपने आईडी के साथ फिर से लाने के बजाय this के साथ तत्व को पास करने का सबसे अधिक अर्थ बनाता है।

doSomething(this) 

आप वस्तु से सभी डेटा प्राप्त कर सकते हैं:

2

वस्तु दर्रा

function(obj){ 
    var value = obj.value; 
    var id = obj.id; 
} 

या पारित id केवल:

doSomething(this.id) 

वस्तु प्राप्त करें और है कि मूल्य के बाद :

function(id){ 
    var value = document.getElementById(id).value; 
} 
संबंधित मुद्दे