【问题标题】:How to change bgcolor of each item in array with JavaScript如何使用 JavaScript 更改数组中每个项目的 bgcolor
【发布时间】:2014-11-14 21:42:11
【问题描述】:

(请记住,这需要与 HTML 电子邮件兼容,因此必须使用表格和过时的属性 - 例如 bgcolor。)

我正在尝试更改具有特定 id 的所有 TD 的 bgcolor,该 id 在 JavaScript 的数组中定义。我尝试了许多类似的例子,但都没有运气,例如:

var yellowIDs = ["1201", "1204", "0116"];

for (i = 0; i < yellowIDs.length; i++) { 
    document.getElementById(yellowIDs[i]).bgcolor = "#ffff00";
}

HTML 部分

<td id="1201" align="center" width="35" style="mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;font-family: Arial, Helvetica, sans-serif;color: #fff;font-size: 16px;font-weight: bold;background-color: #D83826;line-height: 100%;padding: 5px;" valign="top">Sun</td>

我确定我错过了很多,我很感激任何和所有的帮助。谢谢。

【问题讨论】:

  • CSS background-color 甚至可以在电子邮件中使用。问题可能是您不允许在电子邮件中执行 JavaScript,或者您使用以数字开头的 ID(它在 HTML5 中有效,但某些 JS 实现不允许 getElementById('123'))。
  • @pawel 我还没有在电子邮件本身中尝试过这个。我正在尝试先在浏览器中解决它。然后我会参加那场战斗:)
  • 通过在开头添加一个字母来更改ID,例如id="td1201"(数组中的一个)-您在cmets中提到的错误可能是由getElementById为ID返回null引起的以数字开头。但我认为这是在浪费你的时间,因为没有一个健全的电子邮件客户端会允许你执行 JS。
  • 顺便说一句,也许会发布一个小提琴?在这里,它适用于数字和字母数字 id:jsfiddle.net/45wusjds/1
  • 在 gmail/outlook 中你不能使用 JS,你只能使用内联样式,比如
    text

标签: javascript arrays html-email


【解决方案1】:

这段代码应该可以工作,你对HTMLElement.setAttribute感兴趣

var yellowIDs = ["1201", "1204", "0116"];

for (i = 0; i < yellowIDs.length; i++) { 
    document.getElementById(yellowIDs[i]).setAttribute('bgcolor',"#ffff00");
}

【讨论】:

  • bgcolor 不是有效的 CSS 属性。
  • @mgwhitfield TypeError: 'null' 不是一个对象(评估'document.getElementById(yellowIDs[i]).setAttribute')
  • @AlexChar 但它是(嗯,至少在 HTML3.2 的旧时代 ;))一个有效属性,如 &lt;div bgcolor="#f00"&gt;&lt;/div&gt;
  • @AlexChar bgcolor 不是 CSS,而是 的一个属性。我知道这很奇怪,但是使用 HTML 电子邮件很多是...
  • 试试 document.getElementById(yellowIDs[i]).style.background = "#ffff00";
【解决方案2】:

试试这个

document.getElementById(yellowIDs[i]).style.backgroundColor = "#ffff00";

【讨论】:

  • 我也试过这个,得到了类似的错误,正如我在上面的评论中提到的“null不是对象......”
【解决方案3】:

您不能在电子邮件中使用 Javascript。大多数客户会阻止它。您无法手动更改这些 bgcolors。

【讨论】:

  • 谢谢。我将把这个脚本改编成我的 ESP 使用的专有脚本。我会在服务器端处理。
【解决方案4】:

你可以试试这个:

var yellowIDs = ["1201", "1204", "0116"];

for (i = 0; i < yellowIDs.length; i++) {
    document.getElementById(yellowIDs[i]).style.background = "red";
}
<div id="1201">aaa</div>
<div id="1204">aaa</div>
<div id="0116">aaa</div>

我还建议使用div1201 之类的 ID。

对于 HTML 4:

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,并且可以是 后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、 下划线(“_”)、冒号(“:”)和句点(“.”)。

但对于 html 5:

该值在元素的 home 中的所有 ID 中必须是唯一的 子树,并且必须至少包含一个字符。该值不得 包含任何空格字符。

source

【讨论】:

  • 谢谢!我确实调整了我的身份证名称。感谢您的提醒。
猜你喜欢
相关资源
最近更新 更多
热门标签