>>4
マジレスしますと,DOMImplementation#hasFeature ('HTML', null) が true であり,かつ操作対象が (X)HTML 文書ならば,属性へはプロパティとしてアクセスできます。わざわざ set/getAttribute する必要はありません。
ただし,プロパティ名が必ずしも (X)HTML の属性名と同じではないことに注意して下さい。
// DOM-Core
labelElement.setAttribute ('class', 'example'); // ただし古い IE,Opera で不具合
labelElement.setAttribute ('for', 'example');
labelElement.setAttribute ('accesskey', 'A');
// DOM-HTML
labelElement.className = 'example';
labelElement.htmlFor = 'example';
labelElement.accessKey = 'A';
* * *
イベントに関して,
node.setAttribute ('ondblclick', listener);
という書き方もよく見かけますが,これがイベントとして動作する保証はありません。
node.ondblclick = listener;
と書くのが現時点では一般的ですが,これには多くの問題があるため標準化されず,代わりに
function listener (e) { return false; }
// DOM-Events
node.addEventListener ('click', listener, false);
// ただし IE は独特のイベントモデルを持つ
node.attachEvent ('onclick', listener);
のようにします。hasFeature ('Events', null) が true であるならば,addEventListener の使用が保証されます。
* * *
ついでに,hasFeature ('CSS', null) が true であるならば,
// DOM-CSS
node.style.setPropertyValue ('font-family', 'Verdana, sans-serif', null);
のようにして,インラインスタイルにアクセス可能です。さらに,hasFeature ('CSS2', null) が true であるならば,
node.style.fontFamily = 'Verdana, sans-serif';
のように,CSS2 拡張インタフェースの使用が保証されます。
* * *
>>0, >>2
『タブルクリックでリンク』『右クリックでリンク』するスクリプトを組んで,そうしたい要素にイベントとして登録して下さい。
スクリプトはタグ内にも書けますが,スクリプトはタグではありません(「要素」「属性」「タグ」の役割をしっかり理解しましょう)。