2

我有一个脚本来更改具有以下 id 的 textarea 的文本对齐方式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.getElementByIddocument.getElementsByTagName但我的无知/惊讶,效果不太好。

我搜索了问题、论坛和谷歌,并找到了 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在测试时遇到了错误。谁能帮帮我?首先十分感谢。

PS 脚本的原因是因为 textareas 的原始内容需要居中,但是当用户开始从中选择模板以在使用脚本<select>中动态填充时,这些模板需要在. 希望这是有道理的。<textarea>showCenterTemplates()<textarea>

4

1 回答 1

6

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 元素,因此数组中的每个位置都是一个元素,并且具有样式属性
于 2011-09-10T00:51:05.793 回答