我目前在一个项目上工作,我无法控制我应用CSS样式的HTML。HTML没有很好地标记,因为没有足够的id和class声明来区分元素。

所以,我正在寻找方法,我可以应用样式的对象,没有id或类属性。

有时,表单项具有“name”或“value”属性:

<input type="submit" value="Go" name="goButton">

是否有一种方法,我可以应用基于名称="goButton"的风格?那“价值”呢?

这是一种很难找到的东西,因为谷歌搜索会找到各种各样的例子,在这些例子中,“名字”和“价值”等宽泛的术语会出现在网页上。

我有点怀疑答案是否定的…但也许有人有聪明的破解方法?

任何建议都将不胜感激。


当前回答

你可以使用属性选择器,但它们不会像meder说的那样在IE6中工作,尽管有javascript的变通方法。检查Selectivizr

更多关于属性选择器的详细信息:http://www.css3.info/preview/attribute-selectors/

/* turns all input fields that have a name that starts with "go" red */
input[name^="go"] { color: red }

其他回答

使用[name=elementName]{}前不带标记也可以。 它将影响所有具有此名称的元素。

例如:

[name =测试]{ 宽度:100 px; } <input type=text name=test> < div name =测试> < / div >

对于未来的谷歌人,供你参考,@meder回答中的方法,可以与任何有name属性的元素一起使用,所以让我们说有一个<iframe>与名称xyz,然后你可以使用如下规则。

iframe[name=xyz] {    
    display: none;
}   

name属性可用于以下元素:

< >按钮 <自定义字段> < >形式 < iframe > <输入> <注册机> < >地图 < meta > <对象> < >输出 <参数> <选择> textarea > <

如果我明白你的问题,

是的,你可以设置单个元素的样式,如果它的id或名称可用,

如。

如果id可用,你就可以控制这个元素,

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsById('goButton');

v_obj.setAttribute('style','color:red;background:none');

否则,如果name可用,则你可以对元素进行控制,

<input type="submit" value="Go" name="goButton">

var v_obj = document.getElementsByName('goButton');

v_obj.setAttribute('style','color:red;background:none');

输入(type =文本){ 宽度:150 px; 长度:150 px; } 输入[name =名字]{ 宽度:100 px; 长度:150 px; } < input type = " text " > < br > <input type="text" name="myname">

你可以使用属性选择器,但它们不会像meder说的那样在IE6中工作,尽管有javascript的变通方法。检查Selectivizr

更多关于属性选择器的详细信息:http://www.css3.info/preview/attribute-selectors/

/* turns all input fields that have a name that starts with "go" red */
input[name^="go"] { color: red }