Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Частичное изменение содержимого элемента (https://javascript.ru/forum/events/3276-chastichnoe-izmenenie-soderzhimogo-ehlementa.html)

kuhok 02.04.2009 16:37

Частичное изменение содержимого элемента
 
Для частичного изменения содержимого элемента, насколько я понял, используется InnerText, но он работает только в ИЕ.

Как получить часть содержимого InnerHTML?

HTML
Код:

<td id=1 onClick="Object.Method(this)">
<div id="word_id">Id</div> Name
</td>

JS
Код:

Object.addToRange = function addToRange(cell){
this[i] = (cell.innerHTML);
};

В JS хочу извлечь не содержимое всей ячейки, а только то, что находится в div

twolf 02.04.2009 17:10

у Вашего div задан id. так что обращайтесь прямо к нему:
getElementById('word_id').innerHTML
Если не будет id, то через childNodes

kuhok 02.04.2009 17:53

Я пытался так делать..но почему-то не получается.
Возможно, это связано с тем как я вызываю функцию (с параметром cell)?

twolf 02.04.2009 18:47

кстати да, бардак у вас с вызовом.
и id с цифры не может начинаться.
вот
<td onclick="myfunc()">
<div id="word_id">Id</div> Name 
</td>

function myfunc(){
var mydata = document.getElementById('word_id').innerHTML;
alert (mydata);
}

IIIEPJIOK 02.04.2009 19:04

Цитата:

и id с цифры не может начинаться
уверены? ;-)

twolf 02.04.2009 21:55

Цитата:

Сообщение от IIIEPJIOK (Сообщение 15797)
уверены? ;-)

Спецификация HTML 4.01
Маркеры ID и NAME должны начинаться с буквы ([A-Za-z]) и могут после буквы содержать любое количество букв, цифр ([0-9]), дефисов ("-"), подчеркиваний ("_"), двоеточий (":") и точек (".").

еще:
Цитата:

Значение id должно начинаться с буквы или подчеркивания, оно не может начинаться с цифры. Служба проверки кода W3C может и не заметит подобную ошибку, однако анализатор XML ее обнаружит. Также, если вы намереваетесь использовать id в JavaScript в форме document. idname. value, необходимо присвоить ему допустимое имя переменной JavaScript, которое должно начинаться с буквы или символа подчеркивания и в которых не допускается использование пробелов или дефисов. Также нежелательно использовать символы подчеркивания в именах class или id по причине старых ограничений в CSS и старых браузерах.

Правила применения атрибута id (окончание). Наконец, для самых строгих приверженцев стандартов отметим, что первым символом в имени id или class может быть и цифра - вместо самой цифры необходимо указать соответствующую escape-последовательность. Правда, таким методом никто не пользуется.

IIIEPJIOK 02.04.2009 22:57

я не спрашивал, что об этом написано в спецификации, действительно ли вы уверены, что id нельзя начинать с цифры?

Т.е по вашему, ниже приведенный код работать не будет?

<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <title></title>
</head>

<body onload="alert(document.getElementById(1).innerHTML)">
<div id=1>мда :)</div>
</body>

</html>

Gvozd 03.04.2009 00:23

IIIEPJIOK,
где будет работать?
например,с XHTML-ным doctype-ом на мобильнике будет работать?
а под Konquere?
а под остальными браузерами?
не факт.
половина багов не-кросбраузерных скриптов свящана с нежеланием разработчиков браузеров следовать стандартам.
вторая половина, из-за нежелания/неумения разработчиков скриптов следовать стандартам.
В BOM-е есть объект window.elements
его даже можно заставить нормально работать в мозилле, при помощи доктайпа.
но, это не повод его использовать.
потому что есть getElementByID, который работает одинаково хорошо во всех браузерах, и об этом известно наверняка

IIIEPJIOK 03.04.2009 09:17

IE, Opera FF, GoogleCrome, Safari и с xhtml доктайпом - будет - факт :)
Цитата:

а под Konquere?
- тут конечно меня вы прихватили :), настолько популярный броузер, а у меня его нет, досада :)

kuhok 03.04.2009 09:58

Цитата:

Сообщение от twolf (Сообщение 15796)
кстати да, бардак у вас с вызовом.
и id с цифры не может начинаться.
вот
<td onclick="myfunc()">
<div id="word_id">Id</div> Name 
</td>

function myfunc(){
var mydata = document.getElementById('word_id').innerHTML;
alert (mydata);
}

Спасибо, работает. Но не совсем так, как я хотел.
Сейчас в mydata помещается содержание 1ой ячейки таблицы..а я хочу, чтобы текущей - именно той, на которую onclick срабатывает


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