2012-01-26 52 views
6

numaralı javascript işlevine nasıl iletilir Bu temel olduğunu biliyorum, ancak tamamen "bu" bir JavaScript işlevi için parametre olarak geçemiyorum. Denemeden uyuşuyorum ...Referans 'bu' bir <a> etiketi

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script language="javascript" type="text/javascript"> 
    function ko(control.id){ 
    alert(control); 
} 
</script> 

<body> 
<div id"lala"> 
    <a id="la" href="javascript:ko(this)" >Votes & Concerns</a> 
</div> 

</body> 
</html> 

Uyarı "undefined!" Gün içinde bir çok yuvarlak yanlış bir şekilde var

+0

Tam olarak ne yapmaya çalışıyorsunuz? Uyarmak ister misiniz ("Oylar ve Endişeler")? Her neyse, bir dizge olarak "la" geçerek başlayabilir, daha sonra etiketi bir DOM nesnesi olarak almak içinseElementByID ("la") alabilirsiniz. – btown

+0

Ekrandaki birçok DIV'nin kimliklerini bulmak için Dom hiyerarşisini kullanmaya çalışıyorum. – DKean

cevap

11
<a id="la" href="#" onclick="ko(this); return false;" >Votes & Concerns</a> 
+0

Sizin çözümünüz tek çözümdür! Kudos, ama çoğunlukla teşekkür ederim. Ama lütfen bana "geri dönüşü" neyin ne olduğunu söyle. hakkında ??? – DKean

+0

javascript işlevinin aramaya döndüğünü varsayalım, fakat çağrı nereye dönebilir ??? İade yanlışını kaldırdım; ve hala çalışıyor! Ama ben acemi değilim ... belki de bir şeyleri özlüyorum ... – DKean

+3

Genel olarak olaylar için yanlış döndüyseniz, 'olayın varsayılan eyleminin devam etmesini engeller. Bir çapa etiketi ve bir tıklama olayı ile, varsayılan eylem belirtilen 'href''e doğru ilerlemektir - bu durumda ori bunu "#" olarak ayarlamıştır, böylece geçerli sayfada kalacak, ancak "false" i döndürmezseniz tarayıcı genellikle geçerli sayfanın üstüne geri döner. – nnnnnn

3

:

function ko(control){ 
    alert(control.id); 
} 

control Eğer ko(this) ile geçiyoruz nesne (DOM öğesi nesne, kesin olarak) olduğunu. Daha sonra control.id ile id özelliğine erişmek istiyorsunuz. Ayrıca, bunu yapmanın çok daha iyi yollarının da olduğu NB'ye de dikkat ediniz. En iyisi, olay işleyicilerini HTML özniteliklerinden ziyade Javascript bloklarına atamaktır.

document.getElementById('la').onclick = function() { 
    alert(this.id); 
}; 
+0

bunu yapmamın nedeni aslında DIV dışkısı kimliğini elde etmektir. 'La' id değeri bilinemez, ancak inceleme ile. Yani "getElementById" komutu için kullanmam var. – DKean

+0

@DennisKean Belgedeki ilk "div" ise, document.getElementsByTagName ('div') [0] .onclick = kullanabilirsiniz ... 'HTML'yi JS'den ayırmanıza izin veren neredeyse bir çözüm var. . – lonesomeday

+0

JS'nin html yapısını ve/veya kimliklerini bilmeden çalışmaması gerçekten ayrı değildir. – nnnnnn

4

gerçek bir olay işleyicisi özelliğinden yapın "href" değerinden Yapmayın:

<a id='la' href='#' onclick='ko(event, this)'> 

Geçiş böylece event içinde varsayılan yorumunu önleyebildiği Mesela Bir tarayıcı, bir <a> numaralı telefondan bir tıklama ile gerçekleştirilir.

function ko(event, element) { 
    if ('preventDefault' in event) event.preventDefault(); 
    event.returnValue = false; // for IE 

    // here "element" will refer to the clicked-on element ... 
} 
+0

Aslen aldığımla aynı sonucu elde ediyorum. "Tanımsız!" – DKean

+0

Üzgünüz, cevabı uzatacağım; Bu gerçekten çalışmalıdır. – Pointy

+0

deneyin ve farklı bir sonuç alırsanız bana bildirin ... – DKean

İlgili konular