Смещение по ширине новым HTML-документом
Я хочу создать новый HTML-документ с помощью JavaScript. Там в теле я хочу создать div (display: inline) и там тег ap. Затем я вставляю в тег p (innerHTML) строку (titleTagString). Теперь я хочу знать, какая ширина смещения у div. На хромированной консоли говорят 0 ... Где сбой? Спасибо!
function titleTagTester(titleTagString) {
//Create new document
newDoc = document.implementation.createHTMLDocument('titleTagTester.html');
//Create var body from document
var body = newDoc.getElementsByTagName('body');
//Create div element with style and add to body of document
newDoc.body.innerHTML += '<div style="width:600px" display="inline" id="divId"></div>';
//Create p element with style and add to div of body of document
newDoc.getElementById('divId').innerHTML += '<p style="color:#1a0dab" "font-family:arial" font-size:18px;">' + titleTagString + '</p>';
//getwidth of div
return newDoc.getElementById("divId").offsetWidth;
}
1 ответ
Я сделал HTML-документ со встроенным в него сценарием так, чтобы он управлял тем же документом DOM:
<!DOCTYPE html>
<html>
<head>
<title>temp</title>
</head>
<body>
<h1>Domething</h1>
</body>
<script type="text/javascript">
function titleTagTester(titleTagString) {
var body = document.getElementsByTagName('body');
//Create div element with style and add to body of document
document.body.innerHTML += '<div style="width:600px" display="inline" id="divId"></div>';
//Create p element with style and add to div of body of document
document.getElementById('divId').innerHTML += '<p style="color:#1a0dab" "font-family:arial" font-size:18px;">' + titleTagString + '</p>';
//getwidth of div
return document.getElementById("divId").offsetWidth;
}
console.log(titleTagTester('temp'))
</script>
</html>
Для этого веб-документа консоль говорит 600. Это не очень хороший ответ на ваш вопрос, так как мы хотим создать новый документ и получить необходимое смещение от этого документа. Тем не менее createHTMLDocument
в вашем случае, кажется, не работает и выясняется, печатая значение newDoc.readyState
, который оказывается неинициализированным, и это, в свою очередь, отвечает за значение смещения как 0
, Один из способов исправить это - вызвать функцию с помощью обработчика события onload вместо вызова функции непосредственно в теге script (например, <body onload="titleTagTester('tempString')">
).