Передача строкового параметра функции в виде цифр
Здравствуйте, столкнулся с проблемой типов. Много лет пишу на VB.net, C# в этих языках все просто
Код:
Function main(srt as string) as string var mystr='0123'; var function main (str) { alert(str); } main(mystr); //результат 123 Просто катастрофа ... Как бороться с типами? |
:-?
var mystr = '0123'; function main (str) { alert(str); } main(mystr); |
вот часть кода:
// data[i].ID '0123' '<input id="' + data[i].Name + '" type="button" onclick="LoadTrackSelectedCar(' + data[i].ID + ')" value="load" />' var LoadTrackSelectedCar = function (ID) { $.post('HandlerTrack.ashx?CarID=' + ID + '&BS=451264' + '&BF=0', '', function (response) { eval(response); alert(data); }); }; Вот это не работает ... |
А что тут должно произойти-то? Я вот вижу формирование строки, которая так и остается там незадействованной и объявление функции без ее вызова.
|
Эта строка создает кнопку на странице, при нажатии которой происходит запрос данных у сервера, и если входной строковой параметр имеет вид '123456' то все прекрасно работает, а нежели '0123456' то 0 отбрасывается не могу понять как это победить ...
|
Что? Здесь создается строка. Просто создается строка. Создается и тут же удаляется сборщиком мусора, да, ибо никакой переменной не присваивается. Схерали она должна в DOM попасть?
|
Цитата:
Создание меток на yandex map var initcars = function () { $.post('HandlerCar.ashx', '', function (response) { eval(response); for (i in data) { //alert(Number(data[i].x), Number(data[i].y)); var myGeoObject = new ymaps.GeoObject({ geometry: { type: "Point", coordinates: [Number(data[i].x), Number(data[i].y)] }, // Свойства. properties: { // Контент метки. iconContent: data[i].Name, hintContent: 'Имя: ' + data[i].Name + '<br />' + 'ID: ' + data[i].ID + '<br/>' + 'Общий пробег: ' + data[i].Path + '<br/>' + 'Скорость движения: ' + data[i].Speed + '<br />' + 'Время события: ' + data[i].LastTime + '<br />' + 'Загрузить трек => ' + '<input id="' + data[i].Name + '" type="button" onclick="LoadTrackSelectedCar("' + data[i].ID + '")" value="<-->" />', id: data[i].ID } }, { preset: data[i].IconType }); myMap.geoObjects.add(myGeoObject); } initlist(); initmap(); }); }; var LoadTrackSelectedCar = function (ID) { $.post('HandlerTrack.ashx?CarID=' + ID + '&BS=456285' + '&BF=0', '', function (response) { eval(response); alert(data); }); }; вот подробнее |
Я так понимаю что проблема в том, что при вызове функции LoadTrackSelectedCar той сгенерированной кнопкой внутри функции в ID теряется 0? Ну так это потому что в результате конкатенации получается:
'" type="button" onclick="LoadTrackSelectedCar(' + data[i].ID + ')" value="load" />' == '" type="button" onclick="LoadTrackSelectedCar(' + '0123' + ')" value="load" />' == '" type="button" onclick="LoadTrackSelectedCar(0123)" value="load" />' В результате в функцию передается число 0123, а не строка. Соответственно решение в том, чтобы поставить кавычки в строку: '" type="button" onclick="LoadTrackSelectedCar(\'' + data[i].ID + '\')" value="load" />' |
Цитата:
Кстати это '<input id="' + data[i].Name + '" type="button" onclick="LoadTrackSelectedCar("' + data[i].ID + '")" value="<-->" />'тоже работать и не должно, тк получается в итоге: <input id="Name" type="button" onclick="LoadTrackSelectedCar("*!*ID")"*/!* value="<-->" /> <input id="Name" type="button" onclick="LoadTrackSelectedCar(" value="<-->" />Выделенный фрагмент отбрасывается как мусор ибо кавычка закрылась. |
Цитата:
|
Часовой пояс GMT +3, время: 23:11. |