Могу ли я применить стиль CSS к имени элемента? - PullRequest
153 голосов
/ 29 марта 2011

В настоящее время я работаю над проектом, в котором у меня нет контроля над HTML, к которому я применяю стили CSS.А HTML-код не очень хорошо помечен, в том смысле, что недостаточно идентификаторов и объявлений классов для различения элементов.

Итак, я ищу способы применения стилей к объектам, которые неимеют идентификатор или атрибут класса.

Иногда элементы формы имеют атрибут «имя» или «значение»:

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

Есть ли способ применить стиль на основе имени ="goButton"?А как насчет «значения»?

Это та вещь, которую трудно обнаружить, потому что поиск Google найдет все виды случаев, в которых такие широкие термины, как «имя» и «значение», появятся на веб-страницах.

Я как бы подозреваю, что ответ - нет ... но, возможно, у кого-то есть умный взлом?

Любой совет был бы очень признателен.

Ответы [ 8 ]

239 голосов
/ 29 марта 2011

Вы можете использовать селектор атрибута, input[name="goButton"] { }. Имейте в виду, что это не поддерживается в IE6.

Обновление: в 2016 году вы можете в значительной степени использовать их по своему усмотрению, поскольку IE6 мертв. http://quirksmode.org/css/selectors/

http://reference.sitepoint.com/css/attributeselector

51 голосов
/ 18 мая 2013

Пример ввода текста

input[type=text] {    
    width: 150px; 
}

input[name=myname] {    
    width: 100px;
}    
20 голосов
/ 29 марта 2011

Вы можете использовать селекторы атрибутов, но они не будут работать в IE6, как сказал Медер, для этого есть обходные пути JavaScript. Чек Селективизр

Более подробно об атрибутах селекторов: 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 }
11 голосов
/ 20 сентября 2016

Для будущих Google, FYI, метод в ответе @meder, может использоваться с любым элементом, который имеет атрибут name, поэтому, скажем, theres a <iframe> с именем xyz, тогда вы можете использовать правилокак показано ниже.

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

Атрибут name может использоваться для следующих элементов:

  • <button>
  • <fieldset>
  • <form>
  • <iframe>
  • <input>
  • <keygen>
  • <map>
  • <meta>
  • <object>
  • <output>
  • <param>
  • <select>
  • <textarea>
4 голосов
/ 29 марта 2011

Если я правильно понимаю ваш вопрос,

Да, вы можете установить стиль отдельного элемента, если доступен его идентификатор или имя,

например.

если идентификатор доступен, тогда вы можете получить контроль над элементом, как,

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

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

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

иначе, если имя доступно, тогда вы можете получить контроль над элементом, как,

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

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

v_obj.setAttribute('style','color:red;background:none');
3 голосов
/ 11 февраля 2019

Использование [name=elementName]{} без тега также будет работать.Это повлияет на все элементы с этим именем.

Например:

<input type=text name=test>
<div name=test></div>

[name=test]{
 width: 100px;
}
0 голосов
/ 12 января 2018

Это идеальная работа для селектора запросов ...

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

Затем вы можете просмотреть эти коллекции, чтобы обработать найденные элементы.

0 голосов
/ 29 марта 2011

вы изучали возможность использования jQuery? У него очень богатая модель селектора (похожая по синтаксису на CSS), и даже если у ваших элементов нет идентификаторов, вы сможете выбрать их, используя отношения родитель -> ребенок -> внук. Как только вы их выбрали, есть очень простой вызов метода (я забыл точное имя), который позволяет вам применить стиль CSS к элементу (ам).

Он должен быть простым в использовании, и в качестве бонуса вы, скорее всего, будете очень кросс-платформенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...