Оцените выражение, данное как строка

Для ответа на исходный вопрос - существуют различные способы сделать это, но следующее было бы самым простым.

, Если у Вас уже есть дескриптор к дочернему узлу, который Вы хотите удалить, т.е. у Вас есть переменная JavaScript, которая содержит ссылку на него:

myChildNode.parentNode.removeChild(myChildNode);

, Очевидно, если Вы не пользуетесь одной из многочисленных библиотек, которые уже делают это, Вы хотели бы создать функцию для абстракции этого:

function removeElement(node) {
    node.parentNode.removeChild(node);
}
<час>

РЕДАКТИРОВАНИЕ: Как был упомянут другими: если у Вас есть какие-либо обработчики событий, соединенные проводом до узла, Вы удаляете, Вы захотите удостовериться, что Вы разъединяете тех, прежде чем последняя ссылка на удаляемый узел выйдет из объема, чтобы плохие реализации интерпретатора JavaScript не пропускают память.

262
задан zx8754 28 February 2017 в 00:54
поделиться

2 ответа

Функция eval () вычисляет выражение, но «5 + 5» является строкой, а не выражением. Используйте parse () с text = , чтобы преобразовать строку в выражение:

> eval(parse(text="5+5"))
[1] 10
> class("5+5")
[1] "character"
> class(parse(text="5+5"))
[1] "expression"

Вызов eval () вызывает множество вариантов поведения, некоторые - нет. сразу очевидно:

> class(eval(parse(text="5+5")))
[1] "numeric"
> class(eval(parse(text="gray")))
[1] "function"
> class(eval(parse(text="blue")))
Error in eval(expr, envir, enclos) : object 'blue' not found

См. также tryCatch .

390
ответ дан 23 November 2019 в 02:34
поделиться

Вы можете использовать функцию parse () для преобразования символов в выражение. Вам нужно указать, что ввод - это текст, потому что синтаксический анализ ожидает файл по умолчанию:

eval(parse(text="5+5"))
92
ответ дан 23 November 2019 в 02:34
поделиться