这个JavaScript代码有什么问题?

时间:2009-09-07 12:27:07

标签: javascript function iframe

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>';

我正在使用此代码,但函数高度()未运行且它也没有显示任何错误。在JavaScript中使用参数调用函数的正确语法是什么。我是新手,所以没有太多想法。任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:2)

高度函数位于何处?

您需要转义最内部的引号并删除“javascript:”,例如将onload="Javascript:heights('a1')"替换为onload="heights(\'a1\')"

答案 1 :(得分:1)

将字符串添加到一起并不像您想象的那么容易。你在这里遇到各种各样的问题。

  

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

如果company_name和series中的字符不能包含在URL参数中,例如空格或加号或百分数或符号或Unicode,则会中断。他们需要编码。

  

innerHTML ='&lt; IFRAME HEIGHT =“600px”WIDTH =“100%”NORESIZE =“NORESIZE”

你不能在HTML中使用'px'单位,即CSS。不需要noresize,无论如何都无法调整iframe的大小。

  

SRC = “ '+ URLNAME +'”

如果urlname包含“,&lt;或&amp;您可能遇到问题。需要进行HTML编码。

  

NAME =“aol”FRAMEBORDER =“0”ALIGN =“ABSBOTTOM”scrolling =“no”id =“a1”name =“a1”

你有两个名字?这是无效的,会混淆尝试使用window.frames数组或getElementsByName的任何内容。

  

的onload = “使用Javascript:高度( 'A1')” &GT;

'需要反斜杠转义,因为你在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);

答案 2 :(得分:0)

查看您获得的网址路径。试试这样。

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

并且也逃脱了引号

Javascript:heights(\'a1\')

答案 3 :(得分:0)

您不需要JavaScript:高度onload =“”已经作用于执行JavaScript。你可以试试这个:onload =“alert('hello world')”