这个问题今天来到我身边.我正在使用包含大量JSP的基于Web的(Struts 2)项目,并且大多数input, select, table和a元素仅使用name属性定义,没有id设置,例如:
<input name="myname" class="myclass" value="" type="text"/>
到目前为止一切都那么好,除了不幸的是这些字段有很多javascript验证,并且我可以在离开大多数代码之前阅读代码实际上引用了元素document.getElementById.
这里的问题是,这是一个旧的应用程序(实际上不是那么老)只与IE-6和IE-7兼容(我没有搜索网络,以了解IE实际上似乎只找到了元素与name属性,但我想它必须做点什么).每个其他单一浏览器都抱怨和哭泣并不奇怪.
所以,我正在尝试提出一个简单的解决方案:查找所有使用该属性定义input, select, table和a元素的JSP,name但不是id为了修复HTML.
使用我的好朋友http://rubular.com我想出了以下内容:
/<(?:(input|select|a|table))\s+((?!id).)*>
这将捕获每个被引用的元素id.但是,我怎么能断言只有那些name匹配的?
哦,另一个重点.元素的定义是一行的,所以最有可能的是:
<input name="..."
class="..."/>
Run Code Online (Sandbox Code Playgroud)