Переменные и объект настройки Javascript и правильный синтаксис (консоль отладки)

StackOverflow https://stackoverflow.com/questions/1051876

Вопрос

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

Хорошо, вот метод JavaScript на странице

function ReturnValue (sValue, sText) 
{
     window.focus();
     var oForm = document.EditForm;

     switch (szType)        // Form element name
     {
     case 'agt':
        oForm.agt.value = sText;
        oForm.agentman.value = sValue;
        oForm.agtid.value = sValue;                              
        oForm.getagt.focus();
        break;

     case 'county':     
        oForm.County.value = sValue;
        sCurrentCounty = new String(sValue);
        document.all("CountyDisp").innerHTML = sText;
        document.all("City").value = "";
        document.all("CityDisp").innerHTML = "";
        document.all("Area").value = "";
        document.all("AreaDisp").innerHTML = "";
        break;
   default:
        break;      
     }  // End switch
 return;
}

Очень простая функция, и вы могли бы предположить, что параметры были строками, не так ли?Итак, в консоли отладчика сценариев IE8 я попробовал это:

ReturnValue("adf","asdf");// сбой "объект ожидается"

Ожидаемый объект, да, ну, может быть, мне нужны одинарные кавычки для строк, которые я предполагал дальше (на всякий случай).

ReturnValue('adf','asdf');// сбой "объект ожидается"

Ладно, просто уточняю..Итак, мне нужен объект, хранящий строку.Как насчет использования var, я подумал...

вар о = "адф";вар п = "dfsa";ВозвращаемоеЗначение(о,р);//FAIL «Ожидается объект»

Я попробовал использовать одинарные кавычки, просто чтобы быть уверенным.Итак, после всего этого я уверен, что объект нужен.Итак, я попытался создать Object.

о = новый объект();к = новый объект();//{...}

Отсюда я не знал, как добавить строку к объекту, поэтому просто сделал это.

o.value = "текст";k.value = "поле";// "текст" ..."поле"

Хорошо, теперь я взволнован: у меня есть объект с какой-то веревкой, поэтому теперь я пытаюсь снова собрать все это воедино.

ReturnValue (o, z) // Epic Fail «Ожидаемый объект»

Я кладу туда объекты!Теперь я вернулся к исходной точке, может кто-нибудь помочь?

Хорошо, проблема все еще не решена.

После дальнейшего расследования я обнаружил, что сценарий действительно запускается один раз в самом начале загрузки страницы.Я могу отлаживать и ломать код, а пока он находится в режиме паузы, я могу запускать методы.Но после того, как я выпущу и он завершит объявление всех переменных, я не смогу запускать какие-либо методы.Но по какой-то причине тот же метод, который я пытаюсь запустить, можно запустить из всплывающего окна с использованием Window.Opener.ReturnValue(string,string);

Я не понимаю!

Гуру Javascript, где ты, когда ты мне нужен!

Это было полезно?

Решение

Предполагая, что вы определили szType где-то еще, я вставил эту функцию в временную страницу и поигрался с ней, но не могу воспроизвести эту проблему в IE8 (или FireFox 3).

Погуглив, единственное, что я нашел, это ссылку, в которой говорилось, что если вы неправильно установите тип сценария, вы можете получить это, поскольку IE вообще не будет анализировать блок сценария.Установлен ли ваш блок сценария как «текст/javascript»?

Если это не сработает, можете ли вы предоставить больше используемого кода (возможно, также и разметку)?

С другой стороны, вы можете захотеть использовать что-то вроде jQuery или одну из других библиотек JS.JS, специфичный для браузера, такой как этот, является злом (смерть document.all).

Другие советы

Возможно, szType, один из oForm, oForm.agt и т. д., имеет значение null?

Каково значение szType?Я не вижу, чтобы его где-то ставили, может, на этом и бомбят?Кроме того, эти document.all и form.вероятно, не будет работать ни в чем, кроме IE.document.getElementById('theid') намного лучше подходит для получения элементов dom.

Кроме того, можете ли вы попробовать установить точку останова для функции ReturnValue и пройти через нее?Я не использовал консоль IE8 таким образом, но знаю, что таким образом можно выполнить отладку.

редактировать Может ли он выполнять функции таким образом?Возможно, закомментируем все в ReturnValue и убедитесь, что он действительно может выполнить саму функцию.Возможно, вам придется находиться в сеансе отладки или вызвать функцию через window.ReturnValue.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top