2009-09-07 2 views
0
var urlname= '/a/b.php?company_name='+company_name+'&series='+series; 
document.getElementById('frame2').innerHTML='<IFRAME HEIGHT="600px" WIDTH="100%" NORESIZE="NORESIZE" SRC="'+urlname+'" NAME="aol" FRAMEBORDER="0" ALIGN="ABSBOTTOM" scrolling="no" id="a1" name="a1" onload="Javascript:heights('a1')"></IFRAME>'; 

Я использую этот код, но функция heights() не работает, и она также не показывает никаких ошибок. Какой правильный синтаксис для вызова функции с аргументами в JavaScript. Я новичок в этом, поэтому у меня мало идей. Любая помощь будет высоко оценен.В чем проблема с этим кодом JavaScript?

+1

Вы используете Firefox/Firebug для отладки? Что произойдет, если вы перейдете непосредственно к URL-адресу, используемому в iframe src? Выполняется ли функция? – Antony

+0

см. Функцию height() используется для автоматической регулировки высоты моего iframe. Это должно автоматически задавать высоту, которую она не делает. Вот почему я застрял. – developer

+0

«Javascript:» бесполезен в атрибуте обработчика события, таком как onload. Вы путали его с псевдо-протоколом «javascript:» в атрибуте href элемента . –

ответ

2

Где находится функция высоты?

Вам нужно бежать самый внутренние кавычки и удалить «JavaScript:», например, заменить onload="Javascript:heights('a1')" с onload="heights(\'a1\')"

+0

Я пробовал это раньше, но он не работал (не знаю, почему, когда это должно было сработать), но когда я попробовал это снова сейчас после прочтения ваших сообщений, это кажется мне работающим :-) – developer

+0

Где функция высот? – svinto

0

проверки с путем URL-адреса дается. попробуйте вот так.

var urlname= './a/b.php?company_name='+company_name+'&series='+series; 

А также избежать кавычки

Javascript:heights(\'a1\') 
0

Вам не нужно JavaScript: высот OnLoad = "" уже область действия для выполнения JavaScript. Вы можете попробовать это: onload = "alert ('hello world')"

1

Добавление строк вместе не так просто, как вы думаете. Здесь у вас есть все проблемы.

вар URLNAME = '/a/b.php?company_name='+company_name+' серии & = '+ серии;

Если имя_группы и ряды могут содержать символы, в которые не входит URL-адрес, например пробелы или плюсы, проценты или амперсанды или Юникод, это прерывается. Им нужна кодировка.

innerHTML =»< IFRAME HEIGHT = "600px" WIDTH = NORESIZE "100%"= "NORESIZE"

Вы не можете использовать 'точек' единиц в HTML, это CSS. noresize не требуется, вы не можете изменять размер iframes.

SRC = " '+ URLNAME +'"

Если URLNAME содержит "< или & вы могли бы возникнуть проблемы. Нуждается в HTML кодировке.

NAME =" AOL "FRAMEBORDER =" 0" ALIGN = "ABSBOTTOM" скроллинг = "нет" ID = "a1" имя = "a1"

у вас есть два названия? То же недействительным и будет с onfuse все, что пытается использовать массив window.frames или getElementsByName.

OnLoad = "Javascript: высота ('a1')">

'необходим обратный слэш-спасаясь, так как вы использовали, что как разделитель строки в вашем innerHTML =' ...»назначения.

Не начинайте обработчик событий с помощью «javascript:», что имеет смысл только в href (и даже тогда, javascript: URL никогда не следует использовать).

Если вы сделаете свою функцию высот(), возьмите объект вместо строки id, вы можете удалить все эти имена. И использование DOM-методов позволяет избежать мысли об экранировании HTML. например:

function heights() { 
    alert(this.offsetHeight); // 'this' is the object the event was called on 
} 

var iframe= document.createElement('iframe'); 
iframe.frameBorder=iframe.scrolling= 'no'; 
iframe.style.height= '600px'; 
iframe.style.width= '100%'; 
iframe.onload= heights; 
iframe.src= '/a/b.php?company_name='+encodeURIComponent(company_name)+'&series='+encodeURIComponent(series); 
document.getElementById('frame2').appendChild(iframe); 
Смежные вопросы