Javascript 如何在html中将组件的高度设置为父组件的部分?
我正在开发一个web应用程序,我们正在用Java和jsf开发它。我制作了一个用于选择数据的组件,该组件在其他组件(如向导、模态面板等)中使用。问题是,我需要将组件的高度设置为其内部向导高度的百分比。我尝试使用javascript,但问题是window.onload命令在我的组件中不起作用。现在我只是想提醒()父组件的高度,但它不起作用。这是我的代码:Javascript 如何在html中将组件的高度设置为父组件的部分?,javascript,css,jsf,styles,height,Javascript,Css,Jsf,Styles,Height,我正在开发一个web应用程序,我们正在用Java和jsf开发它。我制作了一个用于选择数据的组件,该组件在其他组件(如向导、模态面板等)中使用。问题是,我需要将组件的高度设置为其内部向导高度的百分比。我尝试使用javascript,但问题是window.onload命令在我的组件中不起作用。现在我只是想提醒()父组件的高度,但它不起作用。这是我的代码: <script type="text/javascript"> <![CDATA[ window.onloa
<script type="text/javascript">
<![CDATA[
window.onload = setHeight;
function setHeight()
{
var element = document.getElementById("#{rich:clientId('mainWizardDiv')}");
var h = window.getComputedStyle(element, null).getPropertyValue("height");
alert(h);
}
]]>
</script>
你有没有其他的建议如何做到这一点,我可以使用onload,或者其他任何想法。谢谢。无法获取高度百分比(谷歌搜索高度百分比的原因)。获取绝对高度(以像素为单位),在Javascript中计算(别忘了四舍五入),并将结果加载到您想要的元素中(添加“px”字符串以确保)。这对我来说一直很有效 编辑:(发表评论后)
也许,我能看出错误。您正在分配未定义的函数。首先,您必须定义函数,然后使用它CDATA的错误使用: 应注释CDATA以避免js语法错误:
<html>
<head>
<script type="text/javascript">
//<![CDATA[
window.addEventListener('load', setHeight);
function setHeight()
{
var element = document.getElementById("div1");
var h = window.getComputedStyle(element, null).getPropertyValue("height");
alert(h);
}
//]]>
</script>
</head>
<body>
<div style='height:200px; width:200px;' id='div1'>
</div>
</body>
</html>
//
窗口是全局范围,而不是DOM对象。尝试在DOM对象上使用eventListener:document.body.addEventListener('load',setHeight);你说“它不起作用”是什么意思?请尽量准确一点:函数setHeight
是否在onload
处调用?h
是否有任何值?脚本是在主体中还是在主体中?h
有一个值,setHeight()函数不起作用。问题是当我使用我的组件进入页面时,它没有被调用。我获取它的方式不是问题,我的主要问题是如何在显示我的组件时设置它。也许,我可以看到错误。您正在分配未定义的函数。首先,您必须定义函数,然后使用它。我的代码可以工作,只是不是按照我需要的方式工作,当我按下浏览器中的“重新加载”按钮时,函数会被调用。但当我从页面中导航到包含我的组件的页面时,它不会被调用。“也许,我可以看到错误。您正在分配未定义的函数。首先,您必须定义函数,然后使用它。”否:解析时,js首先定义所有函数,然后执行代码。此顺序没有问题。请注意,仅当文档用作应用程序/xhtml+xml
时,此顺序才适用,这反过来会导致MSIE中出现严重问题。更有可能的是,文档实际上被用作text/html
,因此OP最初使用的CDATA是正确的。另请参见其他注释,CDATA可以在text/html和application/xhtml中使用,在本例中,这似乎是问题所在。在我看来,CDATA是一种旧的/糟糕的做法,它产生的问题比它解决的问题多。旧的/糟糕的做法?抱歉,但我现在有更多的印象,你完全不知道你在说什么:)我个人倾向于编写完整的外部库,并将它们包含到html中。这样可以避免很多问题:代码插入、在同一文件中混合3-4种语言以及帮助维护干净的代码。CDATA是一个“解决”问题的补丁,比如:-不接受JS的旧web浏览器-代码incertion PD:我说的是使用CDATA来包含JS,而不是XML中有用的一般用法。这是完全正确的,但这本身与CDATA完全无关。