JavaScript 显示=“块”;

发布于 2025-01-03 02:20:45 字数 423 浏览 0 评论 0原文

我有一些代码,当单击某些内容时会显示表格行。因此,该行的样式属性被禁用,如下所示:

HTML

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

用户单击并触发 Javascript,效果很好:

Javascript

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

但是,该行的样式是' t 与其余部分一致,即使它的类属性像其他部分一样设置为“rrtr”。

如果我关闭“显示:无;”放在行上并运行它,显示格式正确。

有什么想法吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦初启 2025-01-10 02:20:45

为了获得最佳兼容性,请将

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

Internet Explorer 7 及更低版本设置为不支持 table-row 作为 display 的值。或者,可以说,更好的想法是为行设置一个类,并使用 JS 删除/更改它:

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

For best compatibility, 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';
高跟鞋的旋律 2025-01-10 02:20:45

您应该将显示值设置为table-row,而不是block

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

神回复 2025-01-10 02:20:45

将其设置为 table-row""

set it to table-row or to ""

情深缘浅 2025-01-10 02:20:45

我通过添加/删除名为“隐藏”的类名来隐藏和显示表行。这种方法的优点是能够隐藏/显示任何元素,而无需知道或关心其正常显示样式是什么。对于表格行,这可能不是问题,但对于其他元素,您可能有一天希望从 block 更改为 inline。如果您使用类来隐藏元素,则无需更改 javascript。

在你的CSS中:

.hide {
   display:none;
}

在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, '');
    }
}

那个JS来自SO上的其他人,但不幸的是我忘记保存链接。

因此,要隐藏元素 addClass( document.getElementById('Asset'), 'hide' )removeClass 来显示它。

编辑:我不知何故错过了安迪的回答。它本质上做同样的事情,但是,这些 addClass 和removeClass 方法比“手动”修改 element.className 更健壮一些。

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".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文