Назначение идентификатора для объекта (только один) с помощью JavaScript

По какой-то причине приведенный ниже код не работает. Мне нужно, чтобы назначить идентификатор для одного объекта. Что я делаю не так ниже?

  var frame = document.getElementsByTagName("iframe").setAttribute("id","iframe");

У меня установлена ​​библиотека jQuery, если она будет полезна.

3 ответа

Решение

Поскольку вы используете jQuery, вы можете сделать это намного проще:

$('iframe').attr('id', 'iframe'); // or:
$('iframe').prop('id', 'iframe');

Это влияет на все <iframe> элементы на странице, и, следовательно, вам лучше иметь только один. Дублирующиеся идентификаторы - серьезный бизнес. Они ломают вещи, и вам действительно нужно их избегать. Вы могли бы в цепи .first() или используйте iframe:first селектор, чтобы убедиться, что вы нацелены только на первый элемент.


Вот решение без jQuery, также только для первого <iframe>:

var frame = document.getElementsByTagName("iframe")[0];
frame.id = 'iframe';

Строка 1: вы действительно хотите (первый) iframe элемент в frame,
Строка 2: идентификатор доступен как свойство, так что вы можете использовать .id вместо setAttribute,

Предполагая, что вы нацеливаетесь на первый найденный фрейм:

var frame = document.getElementsByTagName("iframe")[0];
frame.setAttribute("id","iframe");

Причина, по которой вам нужно [0] Индекс является то, что getElementsByTagName вернет коллекцию всех элементов с таким именем тега, даже если есть только один.

И, как сказал ThiefMaster, вы также можете использовать frame.id = "iframe"; вместо setAttribute,

Попробуй это.

 <script>
var frame = document.getElementsByTagName("iframe")[0].id="iframe1";  
 alert(document.getElementById("iframe1").name);
 </script>
Другие вопросы по тегам