HTML'deki kimlik ve ad özellikleri arasındaki fark


Yanıtlar:


626

nameBir form gönderme verileri gönderirken nitelik kullanılır. Farklı kontroller farklı tepki verir. Örneğin, farklı idözelliklere sahip, ancak aynı olan birkaç radyo düğmeniz olabilir name. Gönderildiğinde, yanıtta yalnızca bir değer vardır - seçtiğiniz radyo düğmesi.

Tabii ki, bundan daha fazlası var, ama kesinlikle doğru yönde düşünmenizi sağlayacaktır.


Lütfen biraz daha açıklamak ister misiniz ... Gönderildiğinde, yanıtta yalnızca bir değer vardır - seçtiğiniz radyo düğmesi.
NoviceToDotNet

radyo düğmesi dışında herhangi bir kullanım var mı ?? Bunun dışında büyük farklılıklar olması gerektiğini düşünüyorum ???
Prageeth Godage

28
@Prageeth: Fark, bir "ad" ın tarayıcıdan sunucuya aktarılması ve "id" den farklı olabilmesidir. İnsanların bu farkı istemesinin birçok nedeni vardır. Örneğin, sunucu tarafı dilinizin / çerçevenizin belirli adlara sahip olması için gönderilen değerlere ihtiyacı olabilir, ancak javascriptiniz en iyi şekilde kimliklerde tamamen farklı bir şeyle çalışır.
John Fisher

29
Çok gayri resmi olarak, idön ucunuzun (CSS, JS) birlikte çalıştığı, namesunucunuzun aldığı ve işleyebildiği şey budur. Temel olarak Greeso'nun cevabı böyle.
Saraph

2
Söylemek daha iyi olabilir: Veri gönderilirken name niteliği gereklidir ... yerine: name niteliği veri gönderilirken kullanılır ... çünkü name niteliğini eksik olan herhangi bir form verisi iletilmez (veya aslında iletilmez) HTML özelliklerine göre işlendi)
ebyrob

332

Form gönderimlerinde veya çağrısında kullanılan tanımlayıcı olduğu nameiçin form denetimleri ( <input>ve gibi <select>) özelliklerini kullanın .POSTGET

idBelirli bir HTML öğesini CSS, JavaScript veya bir parça tanımlayıcı ile ele almanız gerektiğinde nitelikleri kullanın . Öğeleri ada göre aramak da mümkündür, ancak bunları kimliğe göre aramak daha basit ve daha güvenilirdir .


2
Bu çok açıklayıcıydı. Öyleyse, bu "isim" sunucuya gönderilen "tanımlayıcı" parametresinin neredeyse bir temsilidir? Bu soru kısmen kabul edilen cevap tarafından cevaplanmaktadır, ancak bu terimlerle ifade edilmemektedir.
Thomas

5
@Tomlar: nameve arasında hiçbir gerekli bağlantı yoktur id. Tanımlayıcı, sayfadaki belirli bir HTML öğesini benzersiz şekilde tanımlar. nameBir HTML form öğesinin niteliği, aksine, benzersiz olmak zorunda değildir ve genellikle bu tür radyo düğmeleri veya çoklu bulunan sayfalarda olduğu gibi, değil <form>elemanları. Her ikisinin tek bir HTML öğesinde kullanıldığı nameve aynı dizenin kullanılması gelenekseldir id, ancak hiçbir şey bunu yapmanıza neden olmaz.
Warren Young

Bazı html biçimlendirmesini yorumlayabilir özel bir textarea uyguluyorum, bunu gerçekleştirmek için bir contentEditable div kullandım. Ona bir 'isim' özniteliği eklerseniz, bu şekilde davranır mı?
yev

126

İşte kısa bir özet:

  • idHTML öğesini Belge Nesne Modeli aracılığıyla tanımlamak için kullanılır (JavaScript aracılığıyla veya CSS ile biçimlendirilmiş). id, sayfa içinde benzersiz olması bekleniyor.

  • nameform öğesine karşılık gelir ve sunucuya nelerin gönderildiğini tanımlar .


27

Bkz. Http://mindprod.com/jgloss/htmlforms.html#IDVSNAME

Fark ne? Kısa cevap, her ikisini de kullanmak ve endişelenmeyin. Ama bu aptallığı anlamak istiyorsanız, sıska:

id = şöyle bir hedef olarak kullanılır: bunun gibi <some-element id="XXX"></some-element>bağlantılar için:<a href="#XXX" .

name = ayrıca, bir formda gönder düğmesine bastığınızda sunucuya gönderilen iletideki alanları HTTP (Köprü Metni Aktarım Protokolü) GET veya POST ile etiketlemek için de kullanılır.

id = JavaScript ve Java DOM (Belge Nesne Modeli) tarafından kullanılacak alanları etiketler. Name = içindeki adlar bir form içinde benzersiz olmalıdır. İd = içindeki isimler belgenin tamamında benzersiz olmalıdır.

Bazen name = ve id = names değişebilir, çünkü sunucu aynı belgedeki çeşitli formlardan veya yukarıdaki örnekteki ile aynı formdaki çeşitli radyo düğmelerinden aynı adı bekler. İd = benzersiz olmalıdır; name = olmamalıdır.

JavaScript benzersiz adlara ihtiyaç duyuyordu, ancak burada benzersiz ad = adlar olmadan çok fazla belge vardı, bu nedenle W3 kullanıcıları benzersiz olması gereken kimlik etiketini icat etti. Ne yazık ki eski tarayıcılar bunu anlamadı. Yani formlarınızda her iki adlandırma şemasına da ihtiyacınız var.

NOT: gibi bazı etiketler için "name" özelliği <a>HTML5'te desteklenmez.


2
Biraz kafa karıştırıcı ... ve bazı noktalarda yanlış olduğunu düşünüyorum. Bu değil mi: parametreler HTTP'de kullanıldığından bir gönderimdeki etiketler nameiçin önemlidir ve yalnızca benzersiz bir tanımlayıcıdır<input><form>id
Don Cheadle

Ayrıca, bu (kayıtsız) kullanıcı kendi sayfasına bağlanıyor (profilindeki bağlantı mindprod.com/jgloss diyor ). Bu SO için bir sorun olup olmadığını bilmiyorum ama oldukça kafa karıştırıcı snippet göz önüne alındığında uygunsuz geliyor.
zb226

24

Bunu düşünme ve kullanma şeklim basit:

id , CSS ve JavaScript / jQuery için kullanılır (bir sayfada benzersiz olması gerekir)

HTML yoluyla bir form gönderildiğinde isim PHP'de form işleme için kullanılır (bir biçimde benzersiz olması gerekir - bir dereceye kadar Paul'un yorumuna bakın)


2
Tamamen doğru değil - radyo düğmelerini birbirine bağlayabildiğinden , Name özniteliğinin bir formda benzersiz olması gerekmez.
Paul

4
Ayrıca, sizi şaşırtabilir, ancak PHP dünyadaki tek sunucu dili değildir.
keskin bkz

@seesharper - Çok komik. Hatta sana oy verdim! Evet, bu beni şaşırtmıyor :)
Greeso

14

Kimlik etiketi - CSS tarafından kullanılan div, span veya diğer öğelerin benzersiz bir örneğini tanımlar . Javascript DOM modelinde görünür ve çeşitli işlev çağrılarıyla bunlara erişmenizi sağlar.

Alanlar için ad etiketi - PHP / sunucu tarafı işlemeye geçirmek istediğiniz bir dizi yapmıyorsanız, form başına benzersizdir . Javascript ile adıyla erişebilirsiniz, ancak DOM'da bir düğüm olarak görünmediğini veya bazı kısıtlamalar uygulanabileceğini düşünüyorum (örneğin .innerHTML'yi kullanamazsınız, örneğin doğru hatırlarsam).


9
radyo düğmeleri gerekir aynı ad düzgün davranmaya paylaşmak - bu form başına benzersiz değil.
nickf

Benim hatam. Açıklığa kavuşturulmasına rağmen, metin girişleri, metin alanları vb. İçin bunları tanımlamak için ad etiketleri kullanılır. Benzersiz değil.
Extrakun

12

Genellikle, adın her zaman id ile değiştirildiği varsayılır . Bu bir dereceye kadar doğrudur, ancak pratik olarak konuşursak form alanları ve çerçeve adları için geçerli değildir . Örneğin, form öğeleriyle nameöznitelik, sunucu tarafı bir programa gönderilecek ad-değer çiftlerini belirlemek için kullanılır ve bunların kaldırılmaması gerekir. Browsers do not use id in that manner. Güvenli tarafta olmak için, form öğelerinde ad ve kimlik niteliklerini kullanabilirsiniz. Yani, aşağıdakileri yazardık:

<form id="myForm" name="myForm">
     <input type="text" id="userName" name="userName" />
</form>

Uyumluluğu sağlamak için, her ikisi de tanımlandığında eşleşen ad ve kimlik özellik değerlerine sahip olmak iyi bir fikirdir. Ancak, dikkatli olun — bazı etiketler, özellikle radyo düğmeleri, benzersiz olmayan ad değerlerine sahip olmalı, ancak benzersiz kimlik değerleri gerektirmelidir.Bir kez daha, bu kimliğin sadece adın yerine geçmediği anlamına gelmelidir; amaç bakımından farklıdırlar. Dahası, eski stil yaklaşımını indirim yapmayın, modern kütüphanelere derinlemesine bakmak, zaman zaman performans ve kolaylık için kullanılan bu sözdizimi stilini gösterir. Hedefiniz her zaman uyumluluk lehine olmalıdır.

Çoğu öğede, name özniteliği daha yaygın kimlik özniteliği lehine kullanımdan kaldırıldı. Ancak, bazı durumlarda, özellikle alanları oluştururlar ( <button>, <input>, <select>ve <textarea>), bu form gönderimine ilişkin ad-değer çifti ayarlamak için gerekli olmaya devam çünkü isim nitelik yaşıyor. Ayrıca, bazı öğelerin, özellikle de çerçevelerin ve bağlantıların, ad özniteliğini kullanmaya devam edebileceğini görüyoruz, çünkü bu öğeleri ada göre almak için genellikle yararlıdır.

Kimlik ve isim arasında açık bir ayrım var. Çoğu zaman ad devam ettiğinde, değerleri aynı şekilde ayarlayabiliriz. Ancak, kimlik benzersiz olmalıdır ve bazı durumlarda isim olmamalıdır — radyo düğmelerini düşünün. Ne yazık ki, kimlik değerlerinin benzersizliği, biçimlendirme doğrulamasıyla yakalanırken olması gerektiği kadar tutarlı değildir. Tarayıcılarda CSS uygulaması, kimlik değerini paylaşan nesneleri biçimlendirir; bu nedenle, çalışma zamanımıza kadar JavaScript'imizi etkileyebilecek biçimlendirme veya stil hatalarını yakalayamayabiliriz.

Bu, JavaScript- The Complete Reference by Thomas-Powell


4
Yalnızca kimlik eşleme adı oluşturma alışkanlığı edinmemenin başka bir nedeni: bir sayfada aynı verileri göndermesi gereken iki formunuz olabilir (ör. İki arama alanı). Bu durumda, nameaynı olmalıdır (sunucu tarafı kodu hangisinin gönderildiğini umursamıyor), ancak idfarklı olmalıdır (çünkü tüm sayfada benzersiz olmalıdır).
IMSoP

10

namebağlantı hedefleri için kullanımdan kaldırıldı ve HTML5'te geçersiz. Artık en azından en yeni Firefox'ta (v13) çalışmıyor. Değişim <a name="hello">için<a id="hello">

Hedefin bir <a>etiket olması gerekmez , genellikle temiz kod olan <p id="hello"> veya <h2 id="hello">vb.

Diğer gönderilerin açıkça söylediği gibi name, hala formlarda kullanılmaktadır (gerekli). Yine META etiketlerinde de kullanılmaktadır.


"Bağlantı hedefleri için ad kullanım dışı" yerine "bağlantı etiketleri için ad kullanım dışı" mı demek istediniz? Nitekim, bağlantı hedefi bir iframe olabilir. Söz konusu iframe için ad niteliğini belirtmezseniz, hedef niteliği bağlantı için çalışmaz. Bu davranış tüm tarayıcılar için sabit kalır ve HTML5 uyumludur.
Yucer

Burada "#something" ile biten bir URL olduğunda nereye gitmek için işaretleyicide olduğu gibi, bir bağlantı çapa yapmak nasıl anlamaya çalışıyorum . söyleyebileceğim en iyi şey, 4'ten önce html'de <a name="something"> olmalı. Html 4'te, <a name="something" id="something"> (eşleme) ve html 5'te <a id="something">, ancak id her şeyde "global bir özellik" olabilir. Ne
anlayamıyorum

9
<form action="demo_form.asp">
<label for="male">Male</label>
<input type="radio" name="sex" id="male" value="male"><br>
<label for="female">Female</label>
<input type="radio" name="sex" id="female" value="female"><br>
<input type="submit" value="Submit">
</form>


6

name Vs id

isim

  • Öğenin adı. Örneğin sunucu tarafından form gönderen alanları tanımlamak için kullanılır.
  • Destekleyici unsurlar <button>, <form>, <fieldset>, <iframe>, <input>, <keygen>, <object>, <output>, <select>, <textarea>, <map>, <meta>, <param>
  • Adın benzersiz olması gerekmez.

İD

  • Genellikle belirli bir öğeyi biçimlendirmek için CSS ile kullanılır. Bu özelliğin değeri benzersiz olmalıdır.
  • Kimlik Global özelliklerdir , tüm öğeler üzerinde kullanılabilir, ancak özelliklerin bazı öğeler üzerinde hiçbir etkisi olmayabilir.
  • Belgenin tamamında benzersiz olmalıdır.
  • Bu özniteliğin değeri, boşlukla ayrılmış değerlere izin veren sınıf özniteliğinin aksine beyaz boşluklar içermemelidir.
  • ASCII harfleri ve rakamları, '_', '-' ve '.' Dışındaki karakterleri kullanma HTML 4'te izin verilmediği için uyumluluk sorunlarına neden olabilir. Bu kısıtlama HTML 5'te kaldırılmış olmasına rağmen, bir kimlik uyumluluk için bir harfle başlamalıdır.

nameStil öğelerinde kullanılan nitelikleri gördüm . Bunun geçersiz olduğunu mu sanıyorum?
Synetech

5

Bir form giriş öğesinin kimliğinin, öğenin içindeki verilerle ilgisi yoktur. Kimlikler, öğeyi JavaScript ve CSS ile bağlamak içindir. Ancak name özniteliği, tarayıcınız tarafından sunucuya gönderilen HTTP isteğinde, value özniteliğinde yer alan verilerle ilişkili değişken adı olarak kullanılır.

Örneğin:

<form>
    <input type="text" name="user" value="bob">
    <input type="password" name="password" value="abcd1234">
</form>

Form gönderildiğinde, form verileri HTTP başlığına şu şekilde dahil edilir:

Bir ID özelliği eklerseniz, HTTP üstbilgisindeki hiçbir şey değişmez. Sadece CSS ve JavaScript ile bağlamayı kolaylaştırır.


2

Bir sunucuya bilgi göndermek için formun kendi gönderme yöntemini kullanmıyorsanız (ve bunun yerine javascript kullanarak yapıyorsanız), bir girişe ek bilgi eklemek için gizli bir giriş değeriyle eşleştirmek yerine ad niteliğini kullanabilirsiniz, ancak girdiye dahil olduğu için daha temiz görünüyor.

İleride izin verilmeyebileceğini düşünmeme rağmen bu bit hala Firefox'ta çalışıyor.

Eski yöntemle göndermeyi planlamadığınız sürece, aynı ad değerine sahip birden çok giriş alanınız olabilir.


1

Kişisel deneyimlere dayanarak ve özellikler için W3 Okullarının açıklamasına göre:

Kimlik, Global bir Niteliktir ve HTML'deki neredeyse tüm öğeler için geçerlidir. Web sayfasındaki öğeleri benzersiz bir şekilde tanımlamak için kullanılır ve değerine çoğunlukla ön uçtan (genellikle JavaScript veya jQuery aracılığıyla) erişilir.

name, HTML'deki belirli öğeler (form öğeleri vb.) için yararlı olan bir özelliktir. Değeri çoğunlukla işleme için arka uca gönderilir.

https://www.w3schools.com/tags/ref_attributes.asp


0

Aşağıda id özelliğinin ilginç bir kullanımı bulunmaktadır. Etiket içinde kullanılır ve sınırların dışındaki öğelerin formunu, form içindeki diğer alanlara eklenecek şekilde tanımlamak için kullanılır.

 <form action="action_page.php" id="form1">
 First name: <input type="text" name="fname"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="lname" form="form1">

0

Id: 1) HTML öğesini Belge Nesne Modeli aracılığıyla (Javascript aracılığıyla veya CSS ile biçimlendirilmiş) tanımlamak için kullanılır. 2) Kimliğin sayfa içinde benzersiz olması bekleniyor.

Ad, form öğesine karşılık gelir ve sunucuya geri gönderilenleri tanımlar. Misal :

<form action="action_page.php" id="Myform">
 First name: <input type="text" name="FirstName"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="LastName" form="Myform">

0

Kimlik, bir öğeyi benzersiz olarak tanımlamak için kullanılır.

Bir form göndermenize rağmen, herhangi bir ad vermezseniz, hiçbir şey gönderilmez. Bu nedenle, form öğelerinin "get or push" gibi form yöntemleriyle tanımlanması için bir ada ihtiyacı vardır.

Ve sadece name özelliğine sahip olanlar dışarı çıkacaktır.


0

idEğer elemanlarını okumak için id kullanabilirsiniz (JavaScript gibi) gerçek kod yazmak, böylece bir kez, bir elemanını a id verecektir. Bu namesadece bir isim, böylece kullanıcı elemanın adını görebiliyorum, sanırım.

Misal:

<h1 id="heading">text</h1>
<script>
  document.getElementById("heading"); //Reads the element that has the id "heading".
</script>
//You can also use something like this:
document.getElementById("heading").value; //Reads the value of the selected element.

Yardımcı oldu mu? Bazı sorunlar olup olmadığını bana bildirin.


0

Kimlik ve ad arasında gerçek bir fark yoktur.

name tanımlayıcıdır ve tarayıcı tarafından sunucuya gönderilen http isteğinde, öğenin değer özelliğinde bulunan verilerle ilişkili değişken adı olarak kullanılır.

Diğer yandan id, tarayıcı, istemci tarafı ve JavaScript için benzersiz bir tanımlayıcıdır.

id, benzersiz öğelere öznitelikler eklemek için daha özel olarak kullanılır. DOM yöntemlerinde, id, Javascript'te eyleminizin gerçekleşmesini istediğiniz öğeye referans vermek için kullanılır.

Örneğin:

<html>
<body>

<h1 id="demo"></h1>

<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
</body>
</html>

Aynısı name özniteliği ile de elde edilebilir, ancak girdi etiketi veya seçim etiketi gibi küçük form öğeleri için form ve adda id kullanılması tercih edilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.