因为我在用验证控件的时候,会根据验证的结果生成一段HTML提示字段符如;如我用JS生成了一段文字
"姓名不能为空,请输入你的姓名<br />密码不能为空<br />验证密码不能为空<br />";
如上面,然后我再用ymPrompt对话框控件弹出来;
以上OK
但是因为生成的验证结果的文字不确定,所以弹出的窗口的大小我也不好判断
ymPrompt.alert(s, null, null, '验证提示');
会显示不完我的验证内容

如何判断我的一段HTML(如上面的语句中的"s")在DIV中显示会占多宽和多高呢;谢谢如果得出的话比如上面那段文件得字宽=150,高=80; 那我的弹出窗口就可以写为
ymPrompt.alert(s,60+150,20+80,'验证提示'); //60,20为要留给ymPrompt的宽高 
谢谢

解决方案 »

  1.   

    可以考虑放到一个隐藏的iframe里,然后获取宽高以后再当参数传过去.
    尝试一下哈.
      

  2.   

    你得看显示的文字多大 行高
    然后要确定下宽度 来算高度大概这样
    <body></body>
    <script>
    function getPos(str, w){ // w为你设定的宽度
       var div = document.createElement('div');
       div.style.position = 'absolute';
       div.style.top = '-100000px';
       div.style.visibility = 'hidden';
       div.style.width = w+'px';
       div.style.fontSize='12px';
       div.style.lineHeight='24px';
       div.innerHTML = str;
       document.body.appendChild(div);
        var h = div.offsetHeight;
    document.body.removeChild(div);
    return h;
    }var h = getPos('中华人民共和国中华人民共和国中华人民共和国', 50);
    alert(h);
    </script>
      

  3.   

    回楼上的,主要是这里有
    document.body.appendChild(div);
    这一句,我感觉不是很好谢谢
        <script type="text/javascript">
            var objdiv = document.createElement('DIV');
            objdiv.innerHTML = '姓名不能为空姓名不能为空姓名不能为空姓名不能为空';
            alert(objdiv.clientWidth);
            alert(objdiv.offsetWidth);
            objdiv.Dispose();//清除掉这个div,这里我写的是C#, js怎么写
        </script>
      

  4.   

    objdiv.parentNode.removeChild(objdiv);
      

  5.   

    function getStrHeight(str, fontSize, containerWidth){
    var i = 0, line = 1, len = 0;
    for (; i < str.length; i++) {
    len += str.charCodeAt(i) > 255 ? 1 : 0.5;
    if (containerWidth <= (len * fontSize)) line++, len = 0;
    }
    return line * fontSize;
    }