use*_*893 4 html javascript polymer
我创建了一个由2张图片组成的数组,并试图显示它们,但是我得到的不是图片而是文字:
object HTMLImageElement
我确定我的图像位于当前正在使用的正确目录中。
< template is="auto-binding">
<section flex horizontal wrap layout>
<template repeat="{{item in items}}">
<my-panel>{{item}}</my-panel>
</template>
</section>
Run Code Online (Sandbox Code Playgroud)
<script>
(function() {
addEventListener('polymer-ready', function() {
var createImage = function(src, title) {
var img = new Image();
img.src = src;
img.alt = title;
img.title = title;
return img;
};
var items = [];
items.push(createImage("images/photos/1.jpeg", "title1"));
items.push(createImage("images/photos/2.jpeg", "title2"));
CoreStyle.g.items = items;
addEventListener('template-bound', function(e) {
e.target.g = CoreStyle.g;
e.target.items = items;
});
});
})();
</script>
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么?
使用:
items.push(createImage(...).outerHTML);
Run Code Online (Sandbox Code Playgroud)
编辑:对原始问题的更改已使其余答案过时。但是我还是把它留在了那里,希望OP或有人能学到一些东西。
我得到了文本:对象HTMLImageElement
我很确定您正在使用类似的方法向DOM中添加新元素:
document.getElementById('#insert_image_here').innerHTML = items[0];
Run Code Online (Sandbox Code Playgroud)
(编辑:这是这里的情况:新创建的对象items[0]是一个HTMLImageElement。当您尝试将其分配给时innerHTML,由于innerHTML是类型String,JavaScript将尝试调用objects toString()方法并将返回值设置为innerHTML。对于DOM元素toString始终返回object XElement。 )
您需要做的是:
document.getElementById('#insert_image_here').appendChild(items[0]);
Run Code Online (Sandbox Code Playgroud)
小智 3
最简单、最安全的方法是将 img 放入模板中并绑定src和title属性,如下所示:
<template repeat="{{item in items}}">
<my-panel><img src="{{item.src}}" alt="{{item.title}}" title="{{item.title}}"></my-panel>
</template>
Run Code Online (Sandbox Code Playgroud)
然后createImage看起来像这样
var createImage = function(src, title) {
return {src: src, title: title};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15214 次 |
| 最近记录: |