Ответ 1
Вы можете использовать селектор атрибута,
input[name="goButton"] {
background: red;
}
<input name="goButton">
В настоящее время я работаю над проектом, в котором у меня нет контроля над HTML, к которому я применяю стили CSS. И HTML не очень хорошо помечен, в том смысле, что недостаточно идентификаторов id и классов для различения элементов.
Итак, я ищу способы применения стилей к объектам, которые не имеют атрибута id или class.
Иногда элементы формы имеют атрибут "имя" или "значение":
<input type="submit" value="Go" name="goButton">
Есть ли способ применить стиль на основе name= "goButton"? Как насчет "ценности"?
Это то, что трудно найти, потому что поиск Google найдет всевозможные экземпляры, в которых на веб-страницах появятся широкие термины, такие как "имя" и "значение".
Я как бы подозреваю, что ответ - нет... но, возможно, у кого-то есть умный хак?
Приветствуются любые советы.
Вы можете использовать селектор атрибута,
input[name="goButton"] {
background: red;
}
<input name="goButton">
Пример ввода текста
input[type=text] {
width: 150px;
}
input[name=myname] {
width: 100px;
}
<input type="text">
<br>
<input type="text" name="myname">
Вы можете использовать селектор атрибутов, но они не будут работать в IE6, как сказал медикер, есть обходные методы javascript для этого tho. Проверьте 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 }
Для будущих googlers, FYI, метод в ответе @meder, может использоваться с любым элементом, который имеет атрибут имени, поэтому давайте скажем, что с именем xyz
, вы можете использовать правило как belows.
iframe[name=xyz] {
display: none;
}
Атрибут name
может использоваться для следующих элементов:
<button>
<fieldset>
<form>
<iframe>
<input>
<keygen>
<map>
<meta>
<object>
<output>
<param>
<select>
<textarea>
Если я правильно понимаю ваш вопрос,
Да, вы можете установить стиль отдельного элемента, если его идентификатор или имя доступны,
например.
Если идентификатор доступен, тогда вы можете получить контроль над элементом типа <,
<input type="submit" value="Go" name="goButton">
var v_obj = document.getElementsById('goButton');
v_obj.setAttribute('style','color:red;background:none');
else, если имя доступно, тогда вы можете получить контроль над элементом типа <,
<input type="submit" value="Go" name="goButton">
var v_obj = document.getElementsByName('goButton');
v_obj.setAttribute('style','color:red;background:none');
Использование [name=elementName]{}
без тега также будет работать.
Это повлияет на все элементы с этим именем.
Например:
[name=test] {
width: 100px;
}
<input type=text name=test>
<div name=test></div>
Это идеальная работа для селектора запросов...
var Set1=document.querySelectorAll('input[type=button]'); // by type
var Set2=document.querySelectorAll('input[name=goButton]'); // by name
var Set3=document.querySelectorAll('input[value=Go]'); // by value
Затем вы можете пройтись по этим коллекциям, чтобы обработать найденные элементы.
Вы изучили возможность использования jQuery? Он имеет очень доступную селекторную модель (похожую на синтаксис CSS), и даже если у ваших элементов нет идентификаторов, вы должны иметь возможность выбирать их, используя отношения parent → child → grandchild. После того, как вы их выбрали, есть очень простой вызов метода (я забыл точное имя), что позволяет применять стиль CSS к элементу (элементам).
Он должен быть простым в использовании и в качестве бонуса, вы, скорее всего, будете очень кросс-платформенным.