为什么我不能将JavaScript getElementsByName()与[0] .style ...一起使用?

时间:2018-02-11 22:26:07

标签: javascript getelementsbyname

如果GET https://api.github.com/user/repos?access_token=<your_token_goes_here> 应该返回一个可索引的元素列表,为什么我不能使用getElementsByName引用具有该名称的唯一元素?

[0]

3 个答案:

答案 0 :(得分:1)

正如其他人提到的mycanvas是变量名而不是元素的name属性。

你正在做的事情还没有成功,因为你没有设置元素本身的“name”属性,这就是document.getElementsByName所针对的目标(详见here。)< / p>

试一试:

mycanvas=document.createElement("canvas");
mycanvas.width = 600;
mycanvas.height = 400;
ctx = mycanvas.getContext("2d");
document.body.appendChild(mycanvas);


mycanvas.setAttribute("name", "bongo");
document.getElementsByName("bongo")[0].style.backgroundColor="#FF0000"; 

“name”属性现在在canvas元素本身上设置,例如:

<canvas width="600" height="400" name="bongo" style="background-color: rgb(255, 0, 0);"></canvas>

重要提示:即使这样可行,您可能还想使用其他方法,因为 name 只应用于以下元素:<a>, <applet>, <button>, <form>, <frame>, <iframe>, <img>, <input>, <map>, <meta>, <object>, <param>, <select>, and <textarea>

答案 1 :(得分:0)

document.getElementsByTagName("canvas")[0].style.backgroundColor="#FF0000"
如果你只有1个画布,

应该有用。

为什么你认为使用“mycanvas”会引用你生成的画布?

document.getElementsByName用于通过name属性

引用表单元素

答案 2 :(得分:0)

因为getElementsByName按名称查找元素(例如,name="foo")。您的画布没有name属性。 (也不应该; name不是canvas elements的有效属性。)

如果您想查看标记名称,请使用getElementsByTagName(对于随DOM更新而更新的“实时”NodeList)或querySelectorAll(返回未更新的快照列表。