Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 获取p标记的行高度_Javascript_Html_Css - Fatal编程技术网

Javascript 获取p标记的行高度

Javascript 获取p标记的行高度,javascript,html,css,Javascript,Html,Css,我想计算div中标记的行高度 var myp=document.getElementById('myp'); var heightLabel=document.getElementById('heightLabel'); heightLabel.innerHTML=myp.style.lineHeight+“是高度。” 人们认为我是一个随时会爆炸的锅炉,但实际上我的血压非常低,这让人们感到震惊 而不是.style属性,您需要获取p元素的getComputedStyle() var eleme

我想计算div中
标记的行高度

var myp=document.getElementById('myp');
var heightLabel=document.getElementById('heightLabel');
heightLabel.innerHTML=myp.style.lineHeight+“是高度。”

人们认为我是一个随时会爆炸的锅炉,
但实际上我的血压非常低,
这让人们感到震惊


而不是
.style
属性,您需要
获取
p
元素的
getComputedStyle()

var elementStyle = window.getComputedStyle(*DOM element*);
之后,您可以简单地使用
elementStyle.getPropertyValue(*style-property*)
prop

顺便说一句,您可以在控制台下检查计算样式(firefox屏幕截图):

见工作示例:

var myp=document.getElementById('myp');
var heightLabel=document.getElementById('heightLabel');
var mypStyle=window.getComputedStyle(myp);
heightLabel.innerHTML=mypStyle.getPropertyValue('line-height')+“是行高。”;
//console.log(mypStyle.getPropertyValue('line-height');//输出20px
//console.log(mypStyle.getPropertyValue的类型('line-height'));//一串
//使用parseFloat将字符串转换为值
//示例:
//parseFloat('20px')//20,数字类型
//parseFloat('22.5rem')//22.5类型的数字
//如果确定,字符串将始终包含intenger值,请改用parseInt()代替
//无法跨浏览器工作
//Chrome返回线高度正常,firefox'20px'
//var getNumberValue=parseFloat(mypStyle.getPropertyValue('line-height');//20、字符串类型
console.log(getLineHeight(myp));
// https://stackoverflow.com/questions/4392868/javascript-find-divs-line-height-not-css-property-but-actual-line-height?noredirect=1&lq=1
函数getLineHeight(元素){
var temp=document.createElement(element.nodeName);
temp.setAttribute(“样式”,“边距:0px;填充:0px;字体系列:”+element.style.fontFamily+“字体大小:”+element.style.fontSize);
temp.innerHTML=“测试”;
temp=element.parentNode.appendChild(temp);
var ret=温度clientHeight;
临时parentNode.removeChild(临时);
返回ret;
}

人们认为我是一个随时会爆炸的锅炉,
但实际上我的血压非常低,
这让人们感到震惊


您需要的是计算样式,而不是样式属性。有没有办法将
普通
转换为数字单位?@MarksCode我已经更新了答案,请参阅我的评论。我解释了如何仅从“20px”字符串中获取“20”,并将其转换为数字类型。如果这有助于您让我知道,请不要忘记接受我的答案。运行代码段时出错:
uncaughttypeerror:无法读取nul
@MarksCode在哪一行的属性“0”
mypStyle.getPropertyValue('line-height')。匹配(/\d+/)[0]
mypStyle.getPropertyValue('line-height')
的输出是什么?@MarksCode确定,再编辑一次。我们使用的不是匹配的数字,而是
parseFloat()
,如果您确定您的值将始终更高,请使用
parseInt()
。请参阅更新的答案。