javascript - 使用 getElementsByTagName 更改 <textarea> 的样式 文本从中心向左对齐

标签 javascript textarea var getelementsbytagname text-align

我有一个脚本来更改 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 更改 &lt;textarea&gt; 的样式 文本从中心向左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7368867/

相关文章:

html - disabled 属性的正确值是多少?

C# LINQ NULL 检查

swift - 懒惰的 Var 与 Let

jquery -\n 在 IE 文本区域中不起作用

jquery - 文本区域的自动完成功能

JSFiddle 上的 Javascript “let”

javascript - 当应用程序退出或设备重新启动时,如何在cordova中使用javascript继续计时器(setTimeout())

javascript - 显示/隐藏 Div

javascript - Primefaces RowToggle - 如何区分行扩展和行折叠?

javascript - IE 的列表方法的替代方案?