Альтернатива для innerHTML?

Ваше понимание верно. Он удаляет выбросы и заменяет их на NaN:

np.random.seed(0)
df = pd.DataFrame(np.random.normal(0,1,(100,10)))

idx = np.abs(df - df.mean()) <= (3*df.std())
outlier_locations = np.where(idx == False)
df1 = df[idx]

print(outlier_locations)

    (array([58]), array([9]))

Если вы ожидаете, что df1 будет содержать меньше записей, чем df, то, возможно, вы хотите удалить строки или столбцы, содержащие выбросы, или просто удалить запись в строке, так что вы останетесь с рваными массивами.

37
задан KdgDev 5 April 2009 в 17:03
поделиться

7 ответов

Рекомендуемый путь посредством управления DOM, но это может быть довольно подробным. Например:

// <p>Hello, <b>World</b>!</p>
var para = document.createElement('p');
para.appendChild(document.createTextNode('Hello, '));

// <b>
var b = document.createElement('b');
b.appendChild(document.createTextNode('World');
para.appendChild(b);

para.appendChild(document.createTextNode('!'));

// Do something with the para element, add it to the document, etc.

Править

В ответ на Ваше редактирование, для замены текущего содержания, Вы просто удаляете существующее содержание, затем используете код выше для заполнения нового содержания. Например:

var someDiv = document.getElementById('someID');
var children = someDiv.childNodes;
for(var i = 0; i < children.length; i++)
    someDiv.removeChild(children[i]);

Но поскольку кто-то еще сказал, я рекомендую использовать что-то как jQuery вместо этого, как не, все браузеры полностью поддерживают DOM и тех, которые действительно имеют причуды, с которыми имеют дело внутренне библиотеки JavaScript. Например, jQuery выглядит примерно так:

$('#someID').html("<p>Hello, <b>World</b>!</p>");
38
ответ дан Turnor 27 November 2019 в 04:32
поделиться

Лучший способ сделать его состоит в том, чтобы использовать document.createTextNode. Одна из главных причин для использования этой функции вместо innerHTML тот весь выход символа HTML, будет заботиться о для Вас, тогда как необходимо было бы выйти строки сами, если бы Вы просто устанавливали innerHTML.

12
ответ дан Andrew Hare 27 November 2019 в 04:32
поделиться

Можно получить тот же эффект путем управления DOM. Самый безопасный способ изменить текст состоит в том, чтобы удалить все дочерние узлы элемента и заменить их новым текстовым узлом.

var node = document.getElementById("one");

while( node.firstChild )
    node.removeChild( node.firstChild );
node.appendChild( document.createTextNode("Two") );

Удаление дочерних узлов избавляется от текстового содержания Вашего элемента прежде, чем заменить его новым текстом.

Причина большинство разработчиков избегает использования innerHTML, состоит в том, что доступ к элементам через DOM является совместимыми стандартами.

8
ответ дан Bill the Lizard 27 November 2019 в 04:32
поделиться

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

document.getElementById("one").firstChild.data = "two";

Так или иначе обратите внимание на то, что innerHTML будет частью предстоящего стандарта HTML 5.

7
ответ дан Ionuț G. Stan 27 November 2019 в 04:32
поделиться
var who=document.getElementById('one'), txt='new text';
if(who.innerText) who.innerText=txt;
else if(who.textContent) who.textContent= txt;

Это может быть столь же нежелательно как innerHTML Вам, но это имеет преимущество работы в некоторых случаях (IE), где innerHTML или appendChild не делают, как некоторые узлы таблицы, текст стиля и элементов сценария и значения полей формы

2
ответ дан kennebec 27 November 2019 в 04:32
поделиться

Вы могли использовать DOM следующим образом:

<html>
<body>
<div>before</div>
<script type="text/javascript">
var element = document.getElementsByTagName("div")[0];
alert(element.firstChild.nodeValue);
element.removeChild(element.firstChild);
element.appendChild(document.createTextNode('after'));
alert(element.firstChild.nodeValue);
</script>
</body>

Но я думаю, что любой редко делает это, но использует платформу как jQuery или Прототип или любую другую платформу JavaScript там вместо этого. Это - пример jQuery:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
</head>
<body>
<div>before</div>
<script type="text/javascript">
var element = $("div");
alert(element.text());
element.text("after");
alert(element.text());
</script>
</body>
1
ответ дан Sergej Andrejev 27 November 2019 в 04:32
поделиться

Мне кажется, что комбинация CSS + HTML + JS должна достичь желаемых результатов:

.myelement:before {   
    content: attr(alt);
} 

...

<span class='myelement' alt='initial value'></span> 

...

element.setAttribute('alt', 'new value'); 

Кто-нибудь знает, работает ли это на практике?

1
ответ дан 27 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: