这个问题今天就出现在我身上了。我正在从事一个基于 Web (Struts 2) 的项目,其中包含大量 JSP,并且大部分input, select, table
and a
元素仅通过以下方式定义name
属性,无id
设置,例如:
<input name="myname" class="myclass" value="" type="text"/>
到目前为止一切都很好,除了不幸的是这些字段有很多 JavaScript 验证,而且据我在离开之前可以阅读代码,其中大多数实际上引用了带有document.getElementById
.
这里的问题是,这是一个旧的应用程序(实际上没那么旧),仅与 IE-6 和 IE-7 兼容(我没有搜索网络以了解 IE 实际上似乎如何仅使用name
属性,但我想它必须做一些事情)。毫不奇怪,所有其他浏览器都会抱怨和哭泣。
所以,我试图想出一个简单的解决方案:查找定义了的所有 JSPinput, select, table
and a
元素与name
属性但不是id
以修复 HTML。
利用我的好朋友http://rubular.com http://rubular.com我想出了以下几点:
/<(?:(input|select|a|table))\s+((?!id).)*>
这将捕获每个引用的元素,而无需id
。但我怎么能真正断言只有那些拥有name
匹配吗?
哦,还有一个重要的点。元素的定义在一行中,因此很可能不存在以下内容:
<input name="..."
class="..."/>