2009-09-07 232 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進行調試嗎?如果直接導航到iframe src中使用的網址,會發生什麼情況?函數是否運行? – Antony 2009-09-07 12:29:21

+0

查看函數heights()用於自動調整我的iframe的高度。這應該自動設置它沒有做的高度。這就是爲什麼im卡住了。 – developer 2009-09-07 12:31:14

+0

「Javascript:」在onload等事件處理程序屬性中沒有用處。您已將它與元素的href屬性中的「javascript:」僞協議混淆。 – 2009-09-07 13:18:27

回答

0

檢查更換onload="Javascript:heights('a1')"拿出來與大家給出的URL路徑。像這樣嘗試。

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

而且也難逃報價

Javascript:heights(\'a1\') 
0

你並不需要JavaScript的:高度的onload = 「」 已經作用域執行JavaScript。你可以試試這個:onload =「alert('hello world')」

1

把字符串加在一起並不像你想象的那麼容易。你在這裏遇到各種各樣的問題。

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

如果company_name和series可以有不能在URL參數中使用的字符,如空格或加號或百分數或符號或Unicode,則會中斷。他們需要編碼。

的innerHTML =」 < IFRAME HEIGHT = 「600px的」 WIDTH = 「100%」 NORESIZE = 「NORESIZE」

不能使用 '在HTML PX' 單位,這是CSS。 noresize不需要,無論如何你都不能調整iframe的大小。

SRC = 「 '+ URLNAME +'」

如果URLNAME包含 「<或&你可能有麻煩。需要進行HTML編碼。

NAME =」 AOL 「FRAMEBORDER =」0「ALIGN =」ABSBOTTOM「scrolling =」no「id =」a1「name =」a1「

您有兩個名字嗎?可以嘗試使用window.frames數組或getElementsByName。

的onload = 「使用Javascript:高度( 'A1')」>

'需要反斜槓逃逸,因爲你使用的是在你的innerHTML =字符串分隔符' ...」分配。

不要用'javascript:'開始事件處理程序,只有在href中才有意義(甚至不應使用javascript:URL)。

如果你讓你的heights()函數採用一個對象而不是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);