Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Копировать div в input - Проблемма в FF (https://javascript.ru/forum/dom-window/29012-kopirovat-div-v-input-problemma-v-ff.html)

lamer 11.06.2012 01:17

Копировать div в input - Проблемма в FF
 
Здравствуйте.
Впервые с таким сталкиваюсь, в FF не работает код а в IE работает, хотя обычно наоборот =)
Подскажите в чем моя ошибка ?

<html>

<head>
</head>

<body>
<div id="clonDiv">To the Game: Sapranno,<abbr title="TitleGame">WOW</abbr># 00235568</div>

<form id="form">
<input type="button" value="CloneDiv" onclick="clone();">
<br>
</form>

<script>
function clone() {
var input = document.createElement('input');
input.type = 'text';
input.value = '';
input.id = 'cln';
input.name = 'cln';
document.getElementById('form').appendChild(input);
document.getElementById('cln').value = document.getElementById('clonDiv').innerText;
}
</script>
</body>

</html>

devote 11.06.2012 01:49

у FF нет свойства .innerText; используйте для него textContent

lamer 11.06.2012 02:26

Цитата:

Сообщение от devote (Сообщение 180764)
у FF нет свойства .innerText; используйте для него textContent

textContent - Не работает в IE :(
Хотелось бы найти кроссбраузерный вариант, хотябы чтоб работал в FF/IE

А innerHTML мне к сожалению не подходит :(

Может кто-то знает альтернативу ?

Deff 11.06.2012 02:37

Цитата:

Сообщение от lamer
textContent

if('\v'=='v'){document.getElementById('cln').value = document.getElementById('clonDiv').innerText;
 } else {document.getElementById('cln').value = document.getElementById('clonDiv').textContent;}

lamer 11.06.2012 03:07

Цитата:

Сообщение от Deff (Сообщение 180766)
if('\v'=='v'){document.getElementById('cln').value = document.getElementById('clonDiv').innerText;
 } else {document.getElementById('cln').value = document.getElementById('clonDiv').textContent;}

:) Вариант, спасибо.

devote 11.06.2012 03:09

Цитата:

Сообщение от lamer
Может кто-то знает альтернативу ?

нет альтернатив, по стандарту нужно использовать именно textContent но ИЕ не понимает новых стандартов, точнее старые версии ИЕ. Поэтому для них нужно делать проверку в коде:
<html>
 
<head>
</head>
 
<body>
<div id="clonDiv">To the Game: Sapranno,<abbr title="TitleGame">WOW</abbr># 00235568</div>
 
<form id="form">
<input type="button" value="CloneDiv" onclick="clone();">
<br>
</form>
 
<script>
function clone() {
    var input = document.createElement('input'),
        cloneDiv = document.getElementById('clonDiv');

    input.type = 'text';
    input.value = '';
    input.id = 'cln';
    input.name = 'cln';
    document.getElementById('form').appendChild(input);
    document.getElementById('cln').value = cloneDiv.textContent || cloneDiv.innerText || "";
}
</script>
</body>
 
</html>

lamer 12.06.2012 20:19

devote прикольно :)

document.getElementById('cln').value = cloneDiv.textContent || cloneDiv.innerText || "";


Это получается FF и IE возьмет тот метод который он понимает ?
А для чего кавычки в конце ?

devote 12.06.2012 20:44

Цитата:

Сообщение от lamer
Это получается FF и IE возьмет тот метод который он понимает ?

ага..
Цитата:

Сообщение от lamer
А для чего кавычки в конце ?

Для того случая, если у ФФ textContent будет пустым, он попытается взять значение из innerHTML и если кавычки не поставить, тогда в поле появится значение undefined. Для этого в конце нужны кавычки, что бы он в случае пустого значения все же пустое и поставил.

lamer 12.06.2012 23:30

devote понял, спасибо. Очень интересный вариант.


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