2016-04-06 16 views
0

私は2つのカスタムコンテキストメニューを持っています(1つは私によって書かれ、もう1つはすでにそこにありました)。鉱山は、単語の下線が引かれたときにのみ表示され、彼は書き方が悪いので、他の行が表に表示されるので、ユーザーは別の行を追加したり、この表から行を削除することができます。Rangeオブジェクト内のタグのclassNameを取得

私が気がついている問題は、テーブルにエラーがあり、それを修正したい場合、テーブルで作業している人が実行中にブロックすることです。

このcontextMenuでは、右クリックが行われた場所から範囲オブジェクトが得られるように、このcontextMenuに書き込みます。私はそれが私のエラータグ(クラス=「エラー」とスパン)からクラスを一致する場合、私は単純なリターンを行うので、範囲オブジェクトの内部タグのクラス名を取得しようとした

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

テーブルのcontextMenuはトリガーしません。

var rngClassName = Rng(0).getAttribute("class").value; 
alert("class =>" + rngClassName); 
if(rngClassName == "error") 
{ 
    return; 
} 

RMB(0)は、somme属性を取得するために数回使用され、正常に動作します。しかし、それはクラス値を取得するために働いていないようだ、値は戻りません、スクリプトvar rngClassName = Rng(0).getAttribute("class").value;で実行を停止し、デバッグ(IEのF12)からエラーは返されません。

Rangeオブジェクトを初めて使用しているので、何か不足していると思われますが、何がわからないのでしょうか。

Spec:IE5、Vanilla Javascript。

+0

あなたはIE5を使用している場合は、私がここにいる – Pimmol

+0

@Pimskieを更新するために検討し、 9月以来、悲しいことに私はちょうど外部の資源であり、仕事をする権利があり、意見はないということを伝えています。 – Slayner

答えて

0

element.classListを試してみてください。次の方法で

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

+0

functionSelect()関数のcontextMenuで選択された要素が取得されません。関数の開始後に範囲オブジェクトのみが生成される – Slayner

0

編集:私は今、あなたのコメントを見て、以下のIE5では動作しません...

あなたの質問を正しく理解していれば、選択した要素のクラスをチェックしたいですか?私はIE5を持っていないので、11とChromeでチェックしました。

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

デモ:あなたはこのような何かを試みることができる9月以来https://jsfiddle.net/spdwn7bo/1/(:)を2秒以内のテキストを選択)

+0

ええと、IE5ではうまく動作しません.... – Slayner

関連する問題