Переменные настройки Javascript, объект и правильный синтаксис (консоль отладки) - PullRequest
0 голосов
/ 27 июня 2009

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

Хорошо, вот метод 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 o = "adf"; var p = "dfsa"; ReturnValue (о, р); // FAIL "Ожидаемый объект"

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

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

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

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

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

* * ReturnValue одна тысяча тридцать восемь (о, г) // EPIC FAIL "Ожидаемый объект"

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

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

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

Я не понимаю!

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

Ответы [ 3 ]

2 голосов
/ 27 июня 2009

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

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

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

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

1 голос
/ 27 июня 2009

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

1 голос
/ 27 июня 2009

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

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

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

...