Назначение идентификатора для объекта (только один) с помощью 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>