2016-04-06 23 views
0

İki özel içerik menüsüne sahibim (biri tarafından yazılmıştır, diğeri zaten oradaydı). Benimki kötü bir şekilde yazıldığı için diğerinin altı çizildiğinde görünür, diğeri masa üzerinde görünür, böylece kullanıcı başka bir satır eklemeyi veya bu tablodan bir satırı silmeyi seçebilir.Bir Range nesnesindeki etiketin className değerini alın

Elimde olan sorun, masada çalışan birinin masada bir hata varsa ve bunu düzeltmek istiyorsanız benimkini engellemesidir.

Bu içerik içinMenu, sağ tıklamanın yapıldığı yerden bir aralık nesnesine sahip olduklarını yazarlar.

document.oncontextmenu = elementSelect; 
function elementSelect(){ 
    Rng = document.selection.createRange(); 
} 

bu benim hata etiketi (class = "hata" ile bir yayılma) sınıfından maç yani eğer aralık nesnesinin içinde etiketinin SinifAdi almaya çalıştı ettik, ben basit bir getiri yapmak tablo için contextMenu böylece tetiklemez.

Bazı durumlarda, somun özniteliğini almak ve bunlar için iyi çalışmak için Rng (0) kullanılır. Ama öyle görünüyor ki, sınıf değerini almak için işe yaramıyor, hiçbir değer dönülmez, komut satırı var rngClassName = Rng(0).getAttribute("class").value; satırında çalıştırmayı durdurur ve hata ayıklamadan (IE'de F12) bir hata döndürülmez.

Bu benim Range nesnesiyle ilk defa çalışıyorum, bu yüzden bir şeyleri kaçırdığımı düşünüyorum ama ne olduğunu bilmiyorum.

Özel: IE5, Vanilya Javascript.

+0

(2 saniye :) içinde metni seçmek), ben Eylül beri buradayım – Pimmol

+0

@Pimskie güncellemek için düşünün ve eylül'den beri onlara ne yazık ki, sadece bir dış kaynak olduğumu ve sadece çalışma ve fikir sahibi olma hakkım olmadığımı söylüyorum. – Slayner

cevap

0

element.classList kullanmayı deneyin. Aşağıdaki yöntemlerle

: classList.add(), classList.remove(), classList.contains()

+0

contextMenu öğesinde, element öğesiSelect() öğesi seçili değil. – Slayner

0

düzenlemek: ben şimdi Yorumunuzu görmek ve aşağıda IE5 çalışmaz ...

Ama sorunuzu doğru anlıyorsam, bir öğenin sınıfını seçerek kontrol etmek ister misiniz? IE5'im yok, ben de 11 ve Chrome'da kontrol ettim.

var selection = document.getSelection(); 
var selRange = selection.getRangeAt(0); 
var parentNode = selRange.startContainer.parentNode; 
var hasError = parentNode.classList.contains('error'); 

Demo: Böyle bir şey deneyebilirsiniz https://jsfiddle.net/spdwn7bo/1/ Eğer IE5 kullanıyorsanız

+0

Çalışmaya başladığında sadece aralık nesnesi oluşturulur Evet, IE5'te çalışmıyor, ne yazık ki .... – Slayner

İlgili konular