作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
比如说,我想看看一个 DOM 元素是否是一个 block 。我可以用三种方式来写,看我的心情:
// first way
if (el.currentStyle.display == "block" || el.currentStyle.display == "inline-block" || el.currentStyle.display == "table-cell")
// second way
var blocks = {"block": 1, "inline-block": 1, "table-cell": 1};
if (el.currentStyle.display in blocks)//
// third way
if (el.currentStyle.display.match(/block|inline-block|table-cell/))
我对他们所有人都有复杂的感觉。一旦我有多个选项,第一个就太冗长了。 Second 包含对象中的那些任意值(这次我放 1s 的地方)。第三个看起来有点矫枉过正。 (过度杀戮到底有什么坏处?)
你知道另一种更好的方法吗?如果不是,这三种方式有什么缺点吗?
请仅使用 Javascript。
最佳答案
我喜欢第三种方式;我认为这看起来一点也不矫枉过正。如果您需要更短的方式,那么这也适用:
el.currentStyle.display.match(/(e-)?(block|cell)/)
但这不是很可读...
可能值得通过扩展 String 原型(prototype)将其全部抽象掉:
String.prototype.matches = function(what) {
return (',' + what + ',').indexOf(',' + this + ',') > -1;
};
// Using it:
el.currentStyle.display.matches('block,inline-block,table-cell');
关于javascript - 在一组预定义的文本选项中查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803110/
我是一名优秀的程序员,十分优秀!