getElementsByName какое имя?

0

Я создаю кучу divs в javascript, и в определенное время я хочу удалить все div.

Мой код выглядит так:

function CreateDiv(width, height, row, col){
var thisTile = document.createElement("div");
thisTile.style.position = "absolute";
thisTile.style.width = width + "px";
thisTile.style.height = height + "px";
thisTile.style.top = row*TileH + topMargin + "px";
thisTile.style.left = col*TileW + leftMargin +"px";
thisTile.style.backgroundImage = "url(" + imagePath + ")";
thisTile.style.backgroundSize = imageWidth + "px " + imageHeight +"px";
thisTile.style.backgroundRepeat = "noRepeat";
thisTile.style.backgroundPosition =  "-" + col*TileW + "px -" + row*TileH + "px";
thisTile.onclick = TileClicked;
thisTile.name = "tiles";
document.body.appendChild(thisTile);
return thisTile;
}
...
var tmp = document.getElementsByName("tiles");
alert("tmp length: " + tmp.length);
for (var i = 0; i < tmp.length; i++)
document.body.removeChild(tmp[i]);

но каждый раз, когда tmp является пустым массивом, поэтому я не могу фактически удалить те div, которые я хочу,

Я попытался изменить

tile.name = "tiles"

в

tile.nodeName = "tiles"

или

tile.className = "tiles"

но никто из них не работал, мне просто интересно, какой атрибут имени или свойство элемента точно совпадает с именем в getElementsByName?

Теги:
properties
getelementsbytagname

3 ответа

0
Лучший ответ

Фактически тег DIV не имеет атрибута имени.

проверьте следующую ссылку:

http://www.w3schools.com/tags/tag_div.asp

дать вашим divs конкретный class и получить доступ, используя:

elements = document.getElementsByClassName(className)
  • 0
    Итак, как мне получить эти элементы здесь? Спасибо!
  • 0
    Вы можете использовать атрибут «класс». ответ изменен уже.
Показать ещё 3 комментария
1

Метод getElementsByName возвращает список элементов с атрибутом с именем name с заданным значением, но только для тех элементов, в которых такой атрибут разрешен спецификациями HTML. И div не среди них.

На самом деле это немного сложнее. Современные браузеры (включая IE 10) фактически реализуют его так, что рассматриваются все элементы с атрибутом name в HTML-разметке, даже если разметка недействительна по спецификациям HTML, например <div name=tiles>foo</div>. Но не элементы, которые имеют только свойство name назначенное им в JavaScript. Разница заключается в том, что атрибут разметки также приводит к добавлению информации в объект attributes.

Так что если вы действительно, действительно хотели использовать name здесь (вы не должны), вы можете заменить

tile.name = "tiles"

от

thisTile.setAttribute("name", "tiles");

И он все равно не работал бы на IE 9 и старше.

Из описания цели в вопросе кажется, что вам нужно просто собрать массив добавленных вами элементов, если впоследствии вам нужно их удалить. То есть, помимо добавления элемента в документ, вы добавляете его в массив, который вы создаете, а затем, когда вам нужно их удалить, вы просто проходите массив.

0

Здесь, в вашем коде, вы использовали следующие коды, включая tiles -

thisTile.name = "tiles";

а также

var tmp = document.getElementsByName("tiles");

Но вы должны использовать tiles[] вместо tiles чтобы сделать tiles массивом элементов. Это единственная ошибка в вашем коде. ваш код будет работать нормально, если вы измените эти два утверждения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню