やっぱりテーブルのマップを作ってから・・・
rowSpanを追加した際の余分なtdの削除方法について
http://www.tagindex.com/cgi-lib/q4bbs/patio.cgi?mode=view&no=2745
これは、正常には動かない。テーブルの表を最初の行から操作しないと解決しそうに無い。いちいち最初の行から走査していたら効率悪いなぁ〜
<!DOCTYPE html> <title></title> <style type="text/css"> table, td { border:1px solid; } </style> <table id="HOGE"> <tr><th></th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th><th>F</th></tr> <tr><th>1</th><td>A-1</td><td>B-1</td><td>C-1</td><td>D-1</td><td>E-1</td><td>F-1</td></tr> <tr><th>2</th><td>A-2</td><td>B-2</td><td>C-2</td><td>D-2</td><td>E-2</td><td>F-2</td></tr> <tr><th>3</th><td>A-3</td><td>B-3</td><td>C-3</td><td>D-3</td><td>E-3</td><td>F-3</td></tr> <tr><th>4</th><td>A-4</td><td>B-4</td><td>C-4</td><td>D-4</td><td>E-4</td><td>F-4</td></tr> <tr><th>5</th><td>A-5</td><td>B-5</td><td>C-5</td><td>D-5</td><td>E-5</td><td>F-5</td></tr> <tr><th>6</th><td>A-6</td><td>B-6</td><td>C-6</td><td>D-6</td><td>E-6</td><td>F-6</td></tr> </table> <script> //@cc_on var TABLE = document.getElementById ('HOGE'); var insideView = function (parent, target) { /*@if (1) return parent.contains (target) && parent != target; @else@*/ return !! (parent.compareDocumentPosition (target) & target.DOCUMENT_POSITION_CONTAINED_BY); /*@end@*/ }; var getParent = function (node, type, val) { return (node) ? (val == node[type]) ? node : arguments.callee (node.parentNode, type, val) : null; }; var clickHandler = function (evt/*EventObject*/) { var n = evt./*@if (1) srcElement @else@*/ target /*@end@*/; var d = n.ownerDocument; var w = d./*@if (1) parentWindow @else@*/ defaultView /*@end@*/; var td; var cellIndex; var rowIndex; var target; var cellNo; var rowNo; var tr; if (insideView (TABLE, n)) { if (td = getParent (n, 'nodeName', 'TD')) { cellNo = td.cellIndex; rowNo = td.parentNode.rowIndex + td.rowSpan; if (tr = TABLE.rows[rowNo]) { if (target = tr.cells[cellNo]) { td.rowSpan += target.rowSpan; TABLE.rows[rowNo].deleteCell (cellNo); } } } } }; document./*@if (@_jscript_version > 5.8) addEventListener( @elif (@_jscript_version <= 5.8) attachEvent( 'on'+ @else@*/ addEventListener( /*@end@*/ 'click', clickHandler, false); </script>
ノンリフレッシュで情報を絞り込むAjaxを改造
http://oshiete.goo.ne.jp/qa/6380778.html
質問のタイトルとは関係なく、クリックイベントを発火させる。
<!DOCTYPE html> <title></title> <ul> <li><a href="#js_cs_dp" onclick="alert(123)">Design Premium</a></li> <li><a href="#js_cs_ds">Design Standard</a></li> <li><a href="#js_cs_wp">Web Premium</a></li> <li><a href="#js_cs_ws">Web Standard</a></li> <li><a href="#js_cs_pp">Production Premium</a></li> <li><a href="#js_cs_mc">Master Collection</a></li> </ul> <script> //@cc_on var getAnchorByHref = function (href, parent) { if (! parent) parent = document.body; var as = parent.getElementsByTagName ('A'); var cnt; var len = as.length; var a; for (cnt = 0; cnt < len; cnt++) { a = as[cnt]; if (href === a.getAttribute ('href' /*@, 2@*/)) return a; } return null; }; var elementClicker = (function (clickEvent) { return function (target) { if (target) { target./*@if (1) fireEvent ('onclick'); @else@*/ dispatchEvent ( clickEvent (target.ownerDocument)); //*@end } }; })(function (doc) { var evt = doc.createEvent ('MouseEvent'); evt.initMouseEvent ( 'click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, document.body); return evt; }); elementClicker (getAnchorByHref ('#js_cs_dp')); </script>