te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>html table - Javascript display = 'block' - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html table - Javascript display = 'block' - Stack Overflow

programmeradmin3浏览0评论

I have some code that shows a tables row when something is clicked. So, the row has it's style attribute disabled, see below:

HTML

<tr id='Asset' class='rrtr' style='display:none;'>

The user clicks and fires the Javascript, which works fine:

Javascript

document.getElementById("Asset").style.display = 'block';

However, the style of the row isn't in line with rest even though it's class attributes are set to 'rrtr' like the rest.

If I turn off 'display:none;' on the row and run it showing, the format is fine.

Any ideas?

I have some code that shows a tables row when something is clicked. So, the row has it's style attribute disabled, see below:

HTML

<tr id='Asset' class='rrtr' style='display:none;'>

The user clicks and fires the Javascript, which works fine:

Javascript

document.getElementById("Asset").style.display = 'block';

However, the style of the row isn't in line with rest even though it's class attributes are set to 'rrtr' like the rest.

If I turn off 'display:none;' on the row and run it showing, the format is fine.

Any ideas?

Share Improve this question edited Dec 1, 2016 at 22:21 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Feb 6, 2012 at 14:14 Homer_JHomer_J 3,32312 gold badges47 silver badges67 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 7

For best patibility, set

document.getElementById("Asset").style.display = '';

Internet Explorer 7 and lower do not support table-row as a value for display. Alternatively– and, arguably, a better idea is to – set a class for the row and remove/change it using JS:

<tr id='Asset' class='rrtr rrtr-hidden'>
<!-- .rrtr-hidden { display: none; } -->
// Remove class `.rrtr-hidden`
document.getElementById("Asset").className = 'rrtr';

Instead of block, you should set the display value to table-row.

set it to table-row or to ""

I hide and show table rows by adding/removing a class name called 'hide'. This approach has the advantage of being able to hide/show any element without knowing or caring what its normal display style is. With table rows, that's probably a non-issue, but with other elements, you may one day wish to change from block to inline for example. If you use a class to hide elements, you don't have to change your javascript.

In your CSS:

.hide {
   display:none;
}

And in javascript,

function hasClass(ele, cls) {
    if( ele != null && ele.className != null ) {
      return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
    } else {
      return false;
    }
}

function addClass(ele, cls) {
    if (! hasClass(ele, cls)) {
      ele.className += " " + cls;
    }
}

function removeClass(ele, cls) {
    if (hasClass(ele, cls)) {
        var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
        ele.className = ele.className.replace(reg, '');
    }
}

That JS came from someone else on SO, but unfortunately I forgot to save a link.

So to hide an element addClass( document.getElementById('Asset'), 'hide' ) and removeClass to show it.

EDIT: I missed Andy's answer somehow. It does essentially the same thing, however, these addClass & removeClass methods are a little more robust than modifying element.className "manually".

发布评论

评论列表(0)

  1. 暂无评论