Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS скрипт замены html (https://javascript.ru/forum/misc/51634-js-skript-zameny-html.html)

danik.js 13.11.2014 20:57

Цитата:

Сообщение от krutoy
А если все переменные без вар заменить на window.variable работает?

Да

candro 13.11.2014 21:00

спасибо

krutoy 13.11.2014 21:09

Цитата:

Сообщение от danik.js
Да

Странно:) Я как-то читал какую-то спеку, там было написано, что переменные c var должны копироваться в глобальный объект. С точки зрения языка, это одно и то же. То есть ссылка var a должна указывать туда же, куда, и window.a Переменная объявленная без var , соответственно, это то же, что и window.a, глобальная область===window, a=1 === window.a=1. Единственное отличие в том, что на переменные с var навешивается св-во dontDelete. То есть, те что без var имеют свой неймспейс, по-сути, отличный от window, но они должны "копироваться" туда. Поэтому, с точки зрения семантики там все чисто. Это пидоры из M$ че-то намудрили в реализации, суки:)

Мне, в принципе, не трудно писать эти вары гребаные, можно дже автоподстановку настроить. Но во-первых, надо знать это все по-идее, наверняка, что и как работает, а не плясать с бубном, поэтому эксперементирую. Во вторых, возможны траблы с удалением ссылок. Самый безопасный вариант, наверное тут, объявлять всегда как свойство глобального объекта, явно, я к этому уже начал склоняться.

krutoy 13.11.2014 22:13

Цитата:

Сообщение от candro
К примеру есть блок <div class="block">, а нужно чтоб через js заменялось к примеру на <div class="block2"></div><div class="block">

Вот Вам, на всякий случай, точное воспроизведение вашего примера
<html>
<head>
<meta charset="windows-1251">
<style>
.block{background: red}
.block2{background: green}
</style>
</head>
<body>
   
<div id="wrap">
 <div class="block">block</div>
</div>
   
<script>
   
wrap=document.querySelector("#wrap")
   
;(function(){
   var re=/(<div\s+class\s*=\s*['"]\s*block\s*['"][^>]*>)/,
       block=wrap.innerHTML,
       block=block.replace(re, "<div class='block2'>block2</div>$1")
       wrap.innerHTML=block
})()
   
</script>
   
</body>
</html>

Если я правильно понял.


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