Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: для новичков > пробелы при передачи параметров функции |
Автор: tired 21.4.2008, 11:18 |
пребположим есть функция: FIO(Name,Dolzhnost) { alert(Name + "-" Dolzhnost) } если вызывать ее в таком виде: FIO('Иван Иванов', 'Слесарь') то в месте "Иван Иванов" будет ошибка из-за пробела. Решение проблемы возможно если вместо пробела поставить "_" но тогда получается не красиво: Иван_Иванов-Слесарь. может есть какая нить встроиная константа заменяющая символ пробела? |
Автор: bars80080 21.4.2008, 11:30 | ||
не может быть такой проблемы, косяк в другом месте (интересно, что проблемы с пробелом часто происходят, когда на серверной стороне формируется инпутбокс, у которого указывается атрибут value либо без кавычек, либо с кавычками, но при этом в самом подставляемом значении тоже есть кавычки) кстати,
|
Автор: tired 21.4.2008, 18:45 | ||||
опечатка... если косяк в другом месте то почему после того как я заменю " " на "_" ошибка не выскакивает? кста ошибка определяеться как "Незавершенная строковая константа" Добавлено через 2 минуты и 46 секунд вобщем вот весь скрипт:
вот вызов функции:
если вместо "-" в Counter-Strike поставить " " то вылезет ошибка. why??? |
Автор: Fortop 21.4.2008, 20:51 |
приведи весь текст формы. Подозреваю, что твоя проблема в это строке. Так как твой ItemName содержит пробел. parent.main.document.forms[0].ItemName.value = a; |
Автор: ksnk 21.4.2008, 23:07 | ||
Может так
|
Автор: tired 21.4.2008, 23:17 | ||
Fortop, я поэтому тему и создал что не знаю как от этого пробела избавиться кроме как заменить его "_" =)) вариант предложенный ksnk не помогает=(( вот вся страница:
это типа онлайн магазин на JavaScript.задали в универе сделать. впринципе и так потянет но хочеться чтобы было все красиво. |
Автор: ksnk 22.4.2008, 07:52 |
Еще раз Это - не форма, а какое-то недоразумение ![]() А зачем тут setTimeout? |
Автор: tired 22.4.2008, 09:48 |
setTimeout тут для того чтобы фрэйм успевал прогрузиться и в него потом вписываються программно параметры. если небудет setTimeout будет ошибка типа "Обьект не найден или null". тэги формы мона и опустить впринципе без них тоже работает. и давайте не уезжать далеко от темы...вопрос как вы помните был про пробелы при передаче параметров функции ![]() |
Автор: bars80080 22.4.2008, 10:44 |
грубо говоря логика системы настолько изощрённая, что мало кто с может дать внятный ответ даже не влезая в её смысл, вызывает серьёзный вопрос: зачем некоторому элементу формы с неизвестным заранее именем присваивать значение - тоже самое имя и тебе кстати ответили, у тебя в строке parent.main.document.forms[0].ItemName.value = a; получается разрыв, если ItemName будет содержать пробел, потому и ошибка |
Автор: tired 22.4.2008, 21:35 |
чорт как то криво первый раз отправил=((( логика в следущем: 1 скрипт-ShowItem(): загружает в фрэйм документ-шаблон для всех товаров. 2 скрипт-move_par(): передает в фрэйм параметры на основе которых формируеться контент документа-шаблона. seTimeout нужен для того чтобы успевал прогружаться документ-шаблон иначе ошибка объект не найден. bars80080, элемент известен - это ItemName - текстовое поле. оно находиться в документе-шаблоне, нужно для вывода в него названия товара по ссылке которого был совершен клик. еще один вопрос: константа "%20" это же пробел? как и где он может использоваться? |
Автор: bars80080 23.4.2008, 09:31 |
если это элемент, почему ему как переменной присваивается некоторое значение? в url, т.е. в принципе можно заменить пробелы на него, а на сервере пропустить через соотв.функцию, но т.к. судя по всему он будет находиться в имени элемента, гарантировтаь нормальную работу не могу |
Автор: tired 23.4.2008, 11:28 |
bars80080,parent.main.document.forms[0].ItemName.value = a; - эта строчка присваивает не элементу значение а свойству элемента(ООП понимаешь ли=)))все работает кроме варианта с пробелом...как быть?( |
Автор: Fortop 23.4.2008, 13:15 |
tired, document.getElementById() это работает, поскольку на прошлой неделе сам с похожим воевал, правда в jQuery, где $('#Clutha Gold') воспринималось несколько неадекватно Добавлено через 2 минуты и 56 секунд Да, и конечно можешь попробовать getElementsByName(), но его я не проверял |
Автор: smartov 23.4.2008, 14:47 |
tired, используйте getElementById... И мой совет - лучше это делать всегда, а про запись document.forms[0]... забыть как страшный сон. А так же getElementsByName() и getElementsByTagName() |
Автор: tired 23.4.2008, 17:46 |
Fortop, smartov а можно поподробнее как это использовать? с кодом и коментами желательно |
Автор: smartov 23.4.2008, 18:04 |
tired, а у вас провайдер google забанил? |