我有一个脚本来更改 ID 为 textbox1
的文本区域的文本对齐方式如下:
// <![CDATA[
function alignFix() {
document.getElementById("textbox1").style.textAlign="left";
}
// ]]>
这是标记:
<textarea cols="36" rows="25" readonly="readonly" id="textbox1" name="textbox" style="text-align: center;">dynamic text populates via another script unrelated to problem</textarea>
这是触发器:
<select class="c9" onchange="showCenterTemplates(this); alignFix();">
它工作得很好。现在我有多个文本区域,我需要这个脚本来工作,所以我认为这将是从 document.getElementById
的一个简单切换。至document.getElementsByTagName
但令我无知/惊讶的是,这并没有那么有效。
我搜索了问题、论坛和 Google,并找到了 document.getElementsByTagName 的实际示例,但不是以我需要的方式。
看起来就像使用 getElementsByTagName
时一样,必须始终声明一个变量(任何人都可以确认这是否属实吗?)所以我尝试了:
// <![CDATA[
function alignFix() {
var textbox = document.getElementsByTagName('textarea');
style_textbox = textbox.style;
style_textbox.textAlign="left";
}
// ]]>
但这样我就得到了 style_textbox is null or not an object
测试时出错。有人可以帮我吗?预先非常感谢。
附注脚本的原因是因为文本区域的原始内容需要居中,但是当用户开始从<select>
中选择模板时动态填充 <textarea>
使用showCenterTemplates()
脚本,这些模板需要在<textarea>
内有左对齐的文本。 。希望这是有道理的。
最佳答案
getElementsByTagName 返回一个元素数组,因此您必须对其进行循环:
var i,j, textbox = document.getElementsByTagName('textarea');
for (i=0, j=textbox.length; i<j; i++) {
textbox[i].style.textAlign='left';
}
编辑:根据评论中的请求,简短说明:
- 只要未达到数组的大小,i 就会从 0(零)开始递增
- textbox 是数组,textbox.lenght 返回其大小
- 对于每个 i(如 i 为 0、i 为 1 等),textbox[i] 表示数组中的一个位置
- 由于数组中充满了 HTML 元素,因此数组中的每个位置都是一个元素, 并且有一个样式属性
关于javascript - 使用 getElementsByTagName 更改 <textarea> 的样式 文本从中心向左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7368867/