我在$skills_arr = array(
'1' => 'Defence',
'2' => 'Strength',
'3' => 'Hitpoints',
'4' => 'Ranged',
'5' => 'Prayer',
'6' => 'Magic',
'7' => 'Cooking'
);
//etc
foreach($array[skillvalues] as $skills){
echo 'Skill Type:'.$skills_arr[$skills['id']];
echo 'Skill XP:'.$skills['xp'];
echo 'Skill Rank:'.$skills['rank'];
echo 'Skill Level:'.$skills['level'];
}
函数上运行了此函数(因此元素在运行之前就存在了)
window.onload
但是,当我执行此操作时,我得到的回报是:
var img = new Image();
var button = document.getElementsByClassName('myButtons');
img.onload = function () {
button.appendChild(img);
};
img.src = 'icons/buttons/fav.png'
此外,我想在此图像上添加一个类
我还应该注意,我没有使用button.appendChild is not a function
标签,而是使用了以下标签:
<button>
答案 0 :(得分:2)
getElementsByClassName
返回一个collection,而不是单个按钮。集合类似于数组,但不完全相同。如果要使用.forEach
遍历集合,则可以使用扩展运算符...
将集合中的内容移动到数组中。然后,您可以使用此数组在其中的每个按钮上循环,然后使用.innerHTML
将图像添加到每个按钮。
此外,要将类别添加到图像,您可以使用img.classList.add()
请参见下面的工作示例:
var img = new Image();
var buttons = [...document.getElementsByClassName('myButton')];
img.src = 'https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a';
img.classList.add('img-btn');
img.onload = function() {
buttons.forEach(button => {
img.id = button.id + '1';
button.innerHTML += img.outerHTML;
});
};
.img-btn {
height: 40px;
width: 40px;
}
<span><a href="#" class="myButton" id="name1">Btn 1</a></span>
<span><a href="#" class="myButton" id="name2">Btn 2</a></span>
<span><a href="#" class="myButton" id="name3">Btn 3</a></span>
还请注意,使用.appendChild()
将img从按钮“移动”到按钮,您需要使用.innerHTML
将img附加到多个按钮。
答案 1 :(得分:0)
这是因为document.getElementsByClassName
返回的类型为Array
。 Array
没有名为appendChild
的函数。您可能应该使用索引来访问按钮元素,例如button[0].appendChild(img)
或使用for
语句来遍历所有按钮。
您可以像这样向图像添加一个类。
img.classList.add("myImageClass");