|
|
|
| У меня есть ссылка:
<a href="#" onclick="appendBefore(this)">Click me!</a>
|
При клике по этой ссылке перед ней должен появляться новый DIV с текстом.
Как такую функцию
function appendBefore(address){
...
}
|
написать на JS? | |
|
|
|
|
|
|
|
для: Eugene77
(29.01.2009 в 07:26)
| | Я не могу никак понять на какие свойства DOM можно расчитывать в решении этой задачи. У разных браузеров они ведь отличаются. Если бы знать на что можно с уверенностью опереться, я бы написал. Первое, что приходит на ум: в начале скопировать в переменную всё содержимое body, добавив при этом нужный элемент, а потом содержимое этой переменной вернуть в body
Что-то в таком роде:
var i, t, new_element;
function appendBefore(address){
while(document.all[i++]){
if(document.all[i++] != address) t[] = document.all[i++];
else {
t[] = new_element;
t[] = document.all[i++];
}
}
document.body.innerHTML=t;
}
|
Но что-топодсказывает мне , что невсё так просто. Во-первых коллекция all ... она во всех браузерах будет работать? Во вторых, что такое innerHTML? Это ведь не массив?
Помогите, пожалуста, разобраться! | |
|
|
|
|
|
|
|
для: Eugene77
(30.01.2009 в 09:36)
| | innerHTML - это свойство тега типа "строка", в ней могут быть любые теги и текст.
Так, по идее:
<html>
<head>
<script>
function appendBefore(a_id){
var elem = document.createElement("DIV");
elem.innerHTML='test';
document.body.insertBefore(elem, document.getElementById('a_id'));
}
</script>
</head>
<body>
<a id='a_1' href='#' onclick=appendBefore(this.id) >Click me!</a>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: coloboc66
(30.01.2009 в 09:52)
| | Замечательно работает!
Спасибо!
Вставлят, правда, почему-то не перед, а после ссылки,но это уже мелочи | |
|
|
|
|
|
|
|
для: Eugene77
(30.01.2009 в 17:54)
| | Честно говоря - сам не пойму, почему "после".Но разбираться - лень... | |
|
|
|
|
|
|
|
для: Eugene77
(29.01.2009 в 07:26)
| |
<script type="text/javascript">
function appendBefore(object){
var elem = document.createElement("DIV");
elem.innerHTML = 'test';
elem.style.border='2px solid #0099FF';
object.parentNode.insertBefore(elem, object);
}
</script>
<table width="300" border="1">
<tr>
<td><a href="#" onclick="appendBefore(this)">Click me!</a></td>
<td><a href="#" onclick="appendBefore(this)">Click me!</a></td>
</tr>
</table>
|
| |
|
|
|
|
|
|
|
для: mikha
(01.02.2009 в 04:47)
| | Да, точно.
Я уже теперь до этого и сам догадался.
Трудны, как всегда лишь первые шаги...
А потом, как всегда, нет проблем... просто заходишь в тупик : ) | |
|
|
|