Nano Hash - криптовалюты, майнинг, программирование

IE: недопустимый целевой элемент — добавление таблицы с использованием строки innerHTML +

В Internet Explorer эта строка document.getElementById("left").getElementsByTagName("tbody")[0].innerHTML = document.getElementById("left").getElementsByTagName("tbody")[0].innerHTML + string; дает мне SCRIPT600: Invalid target element for this operation. …character 10

Строка — это просто то, что содержит набор таблиц. Это отлично работает в Chrome, Safari или Firefox. Есть ли лучший способ сделать это? Что я делаю, так это то, что когда пользователь переходит к нижней части страницы, я добавляю таблицы в таблицу, чтобы загрузить больше контента. Это своего рода сделка с бесконечной прокруткой AJAX - по запросу клиента. Я использую Javascript и предпочел бы остаться с Javascript на данный момент и не переходить на jQuery только для этой задачи.

Обновите также то же самое с: document.getElementById("left").innerHTML = document.getElementById("left").innerHTML + string; Кроме того, слева <table id="left">


  • Вы не можете установить innerHTML таблицы, раздела таблицы или элемента строки таблицы в IE. Вы можете использовать innerHTML для записи всей таблицы или только содержимого ячейки. Используйте методы DOM. PS. Страницы с бесконечной прокруткой Ajax вызывают ненависть, поскольку они имеют серьезные проблемы с удобством использования. 01.03.2013
  • @RobG Я думаю, что то, что вы предлагаете (ваши первые два предложения кажутся конфликтующими), это то, что я только что попытался: переписать всю таблицу с помощью innerHTML. Во-вторых, я считаю, что использую методы DOM. Вы говорите, что я должен создавать дополнительные строки через DOM, а не через строку? Наконец, бесконечная прокрутка запрашивается клиентом. 01.03.2013
  • @RobG, я попытался написать весь код в DOM, но newLink.onclick = function() { toggleVote() }; не хотел меня слушать. У @KernelJames есть отличное решение. Вы согласны? 01.03.2013
  • — первые два предложения не противоречат друг другу. Да, ответ KernelJames в порядке, поскольку он записывает всю таблицу с использованием innerHTML, а затем использует стандартный DOM для передачи новых битов в существующую таблицу. Убедитесь, что дополнительные элементы tbody не будут проблемой (они подходят для HTML, но другой код может не ожидать нескольких тел таблиц). То, что просят клиенты, не всегда разумно. :-( 01.03.2013

Ответы:


1

Да, вам нужно будет сначала обернуть их следующим образом:

var div = document.createElement("div");
div.innerHTML = "<table><tbody>" + string + "</tbody></table>";

document.getElementById("left")
  .appendChild(div.firstChild.tBodies[0]);
01.03.2013
  • +1, но теги tbody являются необязательными, поэтому в них нет необходимости (вводить меньше). элемент tbody является обязательным, поэтому будет создан по умолчанию. 01.03.2013

  • 2

    Немного другой способ, когда вам нужно вставить строку таблицы в конец таблицы. Ваш новый код, например. новый <tr> должен быть в переменной с именем html.

    if (document.attachEvent) { //if using old IE
        var currentTable = document.querySelector("#myTable");
        var currentTableHTML = currentTable.outerHTML;
    
        //replace closing tag with new code + closing tag
        currentTableHTML = currentTableHTML.replace("</tbody>", html + "</tbody>";
    
        currentTable.parentNode.removeChild(currentTable);
    
        //reinsert the table before some other element - you can use something else if you have a container for the table
        document.querySelector("#someElement").insertAdjacentHTML("beforebegin", currentTableHTML);
    }
    else {
        //use insertAdjacentHTML in a normal browser
    }
    
    20.09.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..