Привязка данных к объекту
Всем доброго. Есть задача - привязать некий набор данных, представляемый собой текст с кирилицей и латиницей к ячейкам таблицы.
Смысл в том, чтоб при кликах по ячейкам таблицы в некий DIV выводился привязанный к кликнутым ячеям текст. На сервере делаю так: Код:
'<td note="'+Переменка содержащая привязываемый текст+'">'+IntToStr(d)+'</td>'; Но браузер (FireFox) отображает это неверно, ибо в самом тексте могут присутствовать любые символы в том числе " скажем. Первая мысль - кодировать текст, в то, что браузер не станет самостоятельно отображать. Например просто приводить текст в его HEX представление, а в JS наоборот раскодировать: for(i=0;i<s.length;i+=2){ r+=String.fromCharCode(parseInt('0x'+s[i]+s[i+1])); }; Где s - строка с HEX значениями. Это работает, но выдает на страницу кракозяблики. (сама страница задана как content="text/html; charset=windows-1251"). Видимо раскодировка в UTF производится. Отсюда первый вопрос: А как-то можно указать в какую кодировку переводить? Т.е. получить нормальную кириллицу? Пока отложив это пробую следующий вариант: Код:
'<td note="'+ URLEncode(Days[d].DayContent)+'">'+IntToStr(d)+'</td>' s=me.getAttribute('note'); ...innerHTML=decodeURIComponent(s); Где me - указывает на кликнутую ячейку. Однако получаю ошибку malformed URI sequence И если честно пока нечетко понимаю что она означает. Отсюда второй вопрос: Если делать так, то что это за ошибка, и как ее устранить? И на последок Вопрос номер три: А как вообще стоит делать такие вещи? Страница должна стать автономной - все что нужно, должно быть заранее подгруженно в нее, а уже выборка соответственно содержимого, которое нужно вытянуть в данный момент времени по некому событию, должна управляться на стороне клиента. Т.е. абсолютно без лишнего запроса к серверу. Сервер дожен отработать один единственный раз, дальше вся работа должна лечь на клиента. |
Я пока не понял полностью 3 вопроса, но мне кажется, что использовать нестандартный атрибут для хранения данных, связанных элементами - не очень хорошая идея. Лучше пойти одним из следующих путей:
1) добавить свойство в каждый объект DOM, представляющий ячейку таблицы; 2) сделать обработчик клика замыканием, которое будет привязано к необходимой переменной; 3) вписать необходимое значение в сам обработчик клика на сервере. |
Если вписывать произвольную строку в значение атрибута, то нужно экранировать чувствительные символы:
Код:
< заменить на < |
data свойства(атрибуты) вам в помощь
|
Цитата:
|
Цитата:
|
devote,
:cray: Мну не помнит - но нарылсо(возможно не на data) в ИЕ - после этого юзал выше указанные |
Спасибо за инфу, приму к сведению, пока оставлю способ oneguy.
|
Часовой пояс GMT +3, время: 22:57. |