it-swarm.com.ru

Могу ли я применить стиль CSS к имени элемента?

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

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

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

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

Есть ли способ, которым я могу применить стиль, основанный на name = "goButton"? Как насчет "стоимости"?

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

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

Любой совет будет принята с благодарностью.

144
Questioner

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

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

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

226
meder omuraliev

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

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

input[name=myname] {    
    width: 100px;
}    
49
MRRaja

Вы можете использовать селекторы атрибутов, но они не будут работать в 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 }
17
ChrisR

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

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

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

  • <button>
  • <fieldset> 
  • <form> 
  • <iframe> 
  • <input> 
  • <keygen> 
  • <map> 
  • <meta>
  • <object>
  • <output>
  • <param>
  • <select>
  • <textarea>
9
Mohd Abdul Mujib

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

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

например 

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

<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
Jitesh

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

Например:

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

[name=test]{
 width: 100px;
}
1
Richard Socker

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

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
user4723924