Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在html中将组件的高度设置为父组件的部分?_Javascript_Css_Jsf_Styles_Height - Fatal编程技术网

Javascript 如何在html中将组件的高度设置为父组件的部分?

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

我正在开发一个web应用程序,我们正在用Java和jsf开发它。我制作了一个用于选择数据的组件,该组件在其他组件(如向导、模态面板等)中使用。问题是,我需要将组件的高度设置为其内部向导高度的百分比。我尝试使用javascript,但问题是window.onload命令在我的组件中不起作用。现在我只是想提醒()父组件的高度,但它不起作用。这是我的代码:

<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完全无关。