Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не изменяется innerHTML (https://javascript.ru/forum/css-html/75693-ne-izmenyaetsya-innerhtml.html)

Ppezrk 30.10.2018 11:41

Не изменяется innerHTML
 
// data - раскодированый JSON
// data[0] - 'html>body'
// data[1] - 'innerHTML'
// data[2] - 'Hello World!'
var node_value = document.querySelector(data[0])[data[1]]; //переменная почему-то становится строкой а не обьектом :(
if(node_value !== undefined) {
      node_value = data[2];
 }
else {
      alert('Bad response. Please, reload the page.');
 }

Nexus 30.10.2018 11:46

Попробуйте так:
var node=document.querySelector(data[0]);
if(!node)
    alert('Not found');
else
    node[data[1]]=data[2];

Ppezrk 30.10.2018 12:25

Спасибо. Заработало!

Ppezrk 30.10.2018 12:36

И еще одно. querySelector возвращает елемент по css селектору. А как сделать обратное действие? Т.е. вернуть селектор елемента.

Dilettante_Pro 30.10.2018 16:02

Ppezrk,
У элемента нет какого-то определенного селектора. По каким признакам его искать - определяется в конкретных случаях.
У элемента же есть название тега, есть (может быть) идентификатор id, список классов classList и другие атрибуты и свойства, набор из которых можно задавать для поиска в querySelector, и которые можно посмотреть для уже найденного тем или иным образом элемента.
<html>
  <body>
  </body>
<script>
var data = ['html>body','innerHTML','Hello World!'];
var node=document.querySelector(data[0]);
if(!node)
    alert('Not found');
else {
    node[data[1]]=data[2];
    alert(node.nodeName);
}
</script>
</html>


Часовой пояс GMT +3, время: 19:44.