javascript - 使用 javascript for 循环在 TD 内创建跨度
问题描述
我想使用循环将<span>
s 添加到javascript 中的 s 中。<td>
我的原因是能够获取文本内容的宽度,因为它将与跨度相同。但现在我只想知道...
工作片段:
function mach()
{
var span = Div1.appendChild(document.createElement("SPAN"));
span.setAttribute("id","Div"+1);
var tex = span.appendChild(document.createTextNode("Hola Que Tal Me Gusta"));
//console.log(tex, tex.length,tex.width);
var HisWidth = getComputedStyle(document.getElementById("Div1")).getPropertyValue('width')
console.log(HisWidth,Div1);
}
<html>
<head>
<meta charset="UTF-8">
</head>
<body bgcolor="#FFFFE0" text="#000000">
<table id="tabelle" style="float:left" cellpadding="12" cellspacing="0">
<tr>
<td id="Div1"></td>
</tr>
<tr>
<td id="Div2"></td>
</tr>
</table>
<input type="button" onClick="mach()" value=" create span inside td ">
</body>
</html>
var array = new Array();
var table = document.createElement('TABLE');
var tableBody = document.createElement('TBODY');
table.border = '0';
table.appendChild(tableBody);
var x="Hello";
var y = "World";
function makeAndFillTable()
{
array.push(x,y);
var myTableDiv = document.getElementById("Historie");
tableBody.innerHTML = "";
var j=array.length;
for(var i=0;i<array.length;i++,j--)
{
var tr = document.createElement('TR');
tableBody.appendChild(tr);
var td = document.createElement('TD')
td.setAttribute("id","td"+i);
var span = td.appendChild(document.createElement("SPAN"));
span.setAttribute("id","span"+i);
span.appendChild(document.createTextNode(array[j-1]));
var HisWidth = getComputedStyle(document.getElementById("span"+i)).getPropertyValue('width')
console.log(HisWidth,span0);
td.style.cssText='width:251.665px;text-align:right;font-size:14px';
tr.appendChild(td);
myTableDiv.appendChild(table)
}
}
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="button"value="there"onClick="makeAndFillTable()">
<div class="Historie" id="Historie">
</div>
</body>
</html>
我收到此错误: 未捕获的 TypeError: Window.getComputedStyle: Argument 1 is not an object。
问题必须在这里:
- var span = td.appendChild(document.createElement("SPAN"));
和
- var HisWidth = getComputedStyle(document.getElementById("span"+i)).getPropertyValue('width')
在第一个片段中,我直接获取对象 ID,在第二个片段(1.)中,它只是循环中的变量名。我在如何在该行代码中正确地循环遍历正确的 ID 时遇到了麻烦,我给每个循环中的每个跨度一个不同的 id span.setAttribute("id","span"+i); 但我不能只写“td”+i.appendChild ...
我绝对不知道 2. 代码行有什么问题,因为它与第一个代码段中的完全相同
我尝试添加
var tede = new Array(); 函数外
并将功能更改为
for(var i=0;i<array.length;i++,j--)
{
var tr = document.createElement('TR');
tableBody.appendChild(tr);
var td = document.createElement('TD')
td.setAttribute("id","td"+i);
tede[i]=document.getElementById("td"+i);
var span = tede[i].appendChild(document.createElement("SPAN"));
span.setAttribute("id","span"+i);
span.appendChild(document.createTextNode(array[j-1]));
var HisWidth = getComputedStyle(document.getElementById("span"+i)).getPropertyValue('width')
console.log(HisWidth,span0);
td.style.cssText='width:251.665px;text-align:right;font-size:14px';
tr.appendChild(td);
myTableDiv.appendChild(table)
}
在许多不同的事情上,但这似乎是一种可靠的方法,但也不起作用......:(
在table.border = '0'之后移动myTableDiv.appendChild(table) ; 强文本 和移动tr.appendChild(td); 就在tr.appendChild(td);之后 我得到计算的宽度“auto”,但不是实际宽度... console.log(document.getElementById("span"+i).style.width); 返回一个空字符串...
我愿意寻求任何帮助来启发我的观点=)
解决方案
function ausgabe()
{
array.push(x,y);
var myTableDiv = document.getElementById("Historie");
myTableDiv.appendChild(table)
tableBody.innerHTML = "";
var j=array.length;
var i;
for(i=0;i<array.length;i++,j--)
{
var tr = document.createElement('TR');
tableBody.appendChild(tr);
var td = document.createElement('TD')
td.setAttribute("id","td"+i);
tr.appendChild(td);
var span = td.appendChild(document.createElement("SPAN"));
span.setAttribute("id","span"+i);
span.appendChild(document.createTextNode(array[j-1]));
var HisWidth = getComputedStyle(document.getElementById("span"+i)).getPropertyValue('width');
td.style.cssText='width:251.665px;text-align:right;font-size:14px';
if (!Number.isInteger(i/2))
{
td.style.cssText='width:251.665px;text-align:right;font-size: 22px;font-weight: 550';
}
console.log(HisWidth,span0);
console.log(document.getElementById("span"+i).offsetWidth);
}
}
完成了工作......谢谢Lain,在你的观点之后,这只是使用正确的方法来获得宽度的问题......
推荐阅读
- ceylon - 在不涉及 Null 的情况下满足 'Iterable' 接口
- wordpress - 视觉作曲家和用户角色问题
- forms - 我面临 Laravel 集体/html 类表单未找到错误
- javascript - 动态创建输入并检索其值以通过 Ajax 请求发送
- ruby - 优雅关闭 amqp(和/或)http 守护进程,(以及关于全局变量)
- nidaqmx - libnipalu.so 未能初始化所有 NI 相关命令的错误
- ios - geocodeaddressString 提供了错误的坐标
- c++ - protobuf,如何在我不详细了解的 protobuf 消息中遍历所有设置的字段?(C++)
- mysql - 如何在mysql中根据出生日期计算年龄?
- c# - 在 C# 上生成 Apple JWT