forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   ОСЕЛ!!! Господа, прошу помощи... (http://forum.boolean.name/showthread.php?t=13596)

Reizel 27.10.2010 09:36

ОСЕЛ!!! Господа, прошу помощи...
 
Как то я все писал сайт под оперу, не задумываясь, черт возьми, о существовании Осла, и о его неправильном представлении о коде...
В общем, такая бага:
Пишу в JS - функции:
label = $("#filelabel")[0]
Ругается, говорит что "Предполагается наличие объекта"
Пробовал так:
label=document.getElementById("filelabel") - то же самое.
Пробовал даже так(!) :
label = document.all.filelabel[0] - хрена с два, label==undefined
Пробовал по массиву document.all.filelabel пробежаться , везде null && undefined
Вот сам виновник глюков:
Код:

echo("
<table>
      <tr><td>Метка для поиска:</td><td><input name=\"filelabel\" type=text id=filelabel size=40></td></tr>
      <tr><td>Путь к файлу:</td><td><input name=\"filepath\" type=file id=filepath size=40></td></tr>
      </table>");



PS: вчера до ночи гуглил, нигде ничего нет, или document.all всех спасает, а у меня нет :(
PSPS: Кавычки "" для id не помогают, посему убраны

cyberblut 27.10.2010 12:15

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Итак, по порядку:
1. Значения атрибутов ВСЕГДА берутся в кавычки, такого говна - type=text - быть не должно. Должно быть type="text" и т.д.
2. Чтобы не ставить экраны перед двойными кавычками, возьми свой html внутри echo в одинарные :)
3. $("#filelabel")[0] - это что вообще? Доступ через $() будет работать только с подключённой jQuery или Prototype. ЭТО НЕ МАССИВ! Ты пытаешься забрать объект по ID, более одного объекта с таким ID быть не может! Потому просто $("#filelabel")
4. document.getElementById("filelabel") - это должно работать.

Теперь вопрос:
Ты часом не пытаешься получить объект ДО его создания?

ABTOMAT 27.10.2010 13:45

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

ЭТО НЕ МАССИВ!
Ну вообще $("#filelabel")[0] на джиквери возвратит элемент DOM. (как альтернатива .get(0))
И да, автор, дай уже ссылку на сайт непосредственно, эмулировать DOM и JS в мозгу довольно сложно.

moka 27.10.2010 19:12

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
$("#filelabel") - ты используешь "#" - значит пытаешься получить объект по ID.
getElementById - функция получает эллемент по ID.

А у тебя <input> имеет Name, а не ID.

ABTOMAT 27.10.2010 19:37

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
У него id такой же (только он кавычки убрал зачем-то)

moka 27.10.2010 19:41

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от ABTOMAT (Сообщение 166271)
У него id такой же (только он кавычки убрал зачем-то)

А точн, поэтому и не заметил :)
И чё это: \" ?

.Squid 27.10.2010 20:00

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от MoKa (Сообщение 166272)
А точн, поэтому и не заметил :)
И чё это: \" ?

Он привел кусок РНР кода, в котором он html зачем-то через echo выводит.

cyberblut 27.10.2010 20:00

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от MoKa (Сообщение 166272)
И чё это: \" ?

Экранирование

moka 27.10.2010 20:06

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
А, угу, вижу, спасиб.
ЗЫ, всегда использую одинарную ковычку в php и двойную в html'е =)

.Squid 27.10.2010 20:54

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от MoKa (Сообщение 166278)
А, угу, вижу, спасиб.
ЗЫ, всегда использую одинарную ковычку в php и двойную в html'е =)

Двойные удобны тем, что можно переменные указывать прямо в строке. С одинарными приходится использовать конкатенацию строк.

moka 27.10.2010 20:58

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от .Squid (Сообщение 166284)
Двойные удобны тем, что можно переменные указывать прямо в строке. С одинарными приходится использовать конкатенацию строк.

Этого тоже не знал, но всегда использовал намеренно конкатенацию строк т.к. это в разы улучшает читабельность логики, нежели использование переменных в самих строках.
ЗЫ, у меня NetBeans не подсвечивает "встрочные" переменные...

Reizel 27.10.2010 21:46

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Товарищи, Жыквери подключена, уж я не дурак.
$("#id") - возвражает МАССИВ, в нем запиханы ВСЕ найденные эдементы по id="id"
И дело, по - моему, не в двойных кавычках (ибо пробовал с ними и без них), а в том что JS не находит именно на осле элемент по ID. Надо бы поискать что-нить, да вот инет упал последнее время выше 1 КБ\с не поднимается :(

ABTOMAT 27.10.2010 21:50

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
А вот и не массив, а объект. Впрочем, он так сделан, что к нему можно обращаться в том числе и как к массиву.

cyberblut 28.10.2010 00:01

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от Павел (Сообщение 166292)
$("#id") - возвражает МАССИВ, в нем запиханы ВСЕ найденные эдементы по id="id"

Был бы верующим, перекрестился бы. Если ты сделаешь БОЛЬШЕ ОДНОГО элемента с ОДИНАКОВЫМ id - это будет баг и ты никогда не вытянешь все элементы с таким id. Точно не помню, но либо первый, либо последний по порядку их инициализации. Это name, class и прочие могут сколько угодно повторяться.
Дай ссыль на код. Так не разгребём.

moka 28.10.2010 13:54

Ответ: ОСЕЛ!!! Господа, прошу помощи...
 
Цитата:

Сообщение от Павел (Сообщение 166292)
Товарищи, Жыквери подключена, уж я не дурак.
$("#id") - возвражает МАССИВ, в нем запиханы ВСЕ найденные эдементы по id="id"
И дело, по - моему, не в двойных кавычках (ибо пробовал с ними и без них), а в том что JS не находит именно на осле элемент по ID. Надо бы поискать что-нить, да вот инет упал последнее время выше 1 КБ\с не поднимается :(

Дык, ты поправил свой хмтл код??? Или нет?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot