【问题标题】:How do you display an image on a website from a database using Javascript?如何使用 Javascript 从数据库中显示网站上的图像?
【发布时间】:2018-08-21 19:03:18
【问题描述】:

我一直在尝试制作一个在表格中显示图像、名称、品牌等的可视化数据库网站。我已经设法让它大部分工作,但在试图找出如何显示图像时遇到了困难。出于某种原因,唯一有效的图像是第一行,但之后的所有内容都没有显示图像。我当前的代码是:

    function retrieveItems(){

    var Tablerow = document.getElementById("table");
    Tablerow.class = "w3-ul w3-card-4";
    Tablerow.style = "background-color: #202020";

    var row = document.getElementById("row");
    row.style = "height: 220px";

    var tableData = document.getElementById("tableData");
    tableData.class = "w3-large w3-left";

    var actionButton = document.getElementById("editButton");
    actionButton.innerHTML = "Edit";

    var table = document.getElementById("row");
    var clone = table.cloneNode(true);

for (var i = 0; i < itemArray.length; ++i){

    document.getElementById("itemname").innerHTML = "Item: " + item.name,
    document.getElementById("itembrand").innerHTML = "Brand: " + item.brand,
    document.getElementById("itemcategory").innerHTML = "Category: " + item.category

}

    storage.ref(item.category + '/' + item.number + '.jpg').getDownloadURL().then(function(url) {
        document.getElementById("itemImage").src = url;
    });

table.parentNode.appendChild(clone);
    }


    function createTable() {
        var Tableclassrow = document.getElementById("classrow");
        Tableclassrow.class = "row";
        Tableclassrow.style = "background-color: #202020";
    }

    function createRow() {


    }

我对 JavaScript 很陌生,所以可能有十亿个错误,但我只需要能够看到图像。我没有包含更多代码,因为我认为不需要它,但是如果您想查看它,我可以发布它。

编辑:HTML 部分

            <div class="gtco-tab-content-wrap">
              <div class="col-md-8 col-md-offset-2 text-center">
                    <div class="row">
                        <p align=left>
                           <label>Select Category *</label>
                            <select class="form-control" id="category"                                 onblur="getSubcategoryArray()">
                                <option></option>
                            </select>
                        </p><p align=left>
                            <label>Select Subcategory</label>
                            <select class="form-control" id="subcategory">
                                <option></option>
                            </select>
                        </p><p align=left>
                            <label>Item Number/Reference</label>
                            <input class="form-control" id="itemnumberlookup">

                        <div class="col-md-4 col-md-offset-4 text-center"><br>
                        <br><button class="btn-lg btn-primary btn" onclick="searchDatabase()"><font size="5">Search</font></button>
                        </div>
                    </div><br><br>
                </div>
            </div>

            <div id="tableclass" class="gtco-tab-content-wrap">
             <div id="tableclass2" class= "col-md-8 col-md-offset-2 text-center">
                    <div id="classrow"><br>
                    <font size="5" id="databaselabel"></font><br>
                    <hr id="divider" style="height:px;border:none;color:none;background-color:none;"/><br>
                        <ul id="table">
                            <li class="w3-bar" id="row">
                            <img class="w3-bar-item" style="width:315px" id="itemImage">

                            <span onclick="" class="w3-bar-item w3-button w3-right" 
                            id="editButton"><font size="4"></font></span>
                            <div id="tableData" class= "w3-large w3-left">
                                    <p align="left">
                        <span id="itemname"></span><br>
                        <span id="itembrand"></span><br>
                        <span id="itemnumber"></span><br>
                        <span id="itemcategory"></span><br>
                        <span id="itemdiscount"></span><br>
                        <span id="itemexpiration"></span><br>
                        <span id="itemterms"></span><br>
                                    </p>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>
   </div>

【问题讨论】:

    标签: javascript html firebase firebase-storage


    【解决方案1】:

    尝试&lt;canvas&gt;,如果可以选择 HTML 5 - 请参阅MDN Canvas

    【讨论】:

    • 我不确定 是否会起作用,因为我需要使用诸如汽车之类的图像而不是一些文本或渐变
    【解决方案2】:

    您设置的唯一srcdocument.getElementById("itemImage").src = url,因此只有您的DOM 的第一个元素&lt;img id="itemImage"&gt; 会获得一个src 并会加载并显示图像。

    首先要知道id 在你的DOM 中必须是唯一的。否则document.getElementById("yourId") 将始终返回相同的节点。制作表格时,您必须用唯一的 id 标识每一行,如item-1item-2item-3 等...,然后表格的每个单元格都会有一个类名,如 @987654329 @、itemBrand 等...

    然后,您可以使用document.getElementById('item-25).getElementsByClassName('itemImage')[0] 访问第 n°25 项的图像

    所以假设你的代码,解决方案应该是这样的:

    var table = document.getElementById("row");
    
    itemArray.forEach(function(item) {
        var clone = table.cloneNode(true);
        clone.id = "item-" + item.number
        clone.getElementsByClassName('itemname')[0].innerHTML = "Item: " + item.name,
        clone.getElementsByClassName('itembrand')[0].innerHTML = "Brand: " + item.brand,
        clone.getElementsByClassName('itemcategory')[0].innerHTML = "Category: " + item.category
        storage.ref(item.category + '/' + item.number + '.jpg').getDownloadURL().then(function(url) {
            clone.getElementsByClassName('itemImage')[0].src = url;
        });
        table.parentNode.appendChild(clone);
    })
    

    【讨论】:

    • 感谢您的帮助!我收到一个错误,上面写着“TypeError:table.cloneNode 不是函数”,不知道为什么它应该可以工作!有什么想法吗?
    • 也许你的元素还不存在。在变量table初始化后添加console.log(table)看是否定义了
    • 请您在帖子中添加表格的 HTML 标记?
    • 好的,首先在您的 HTML 中更改id="itemname"id="itembrand" 等...、class="itemname"class="itembrand" 等...。然后在JS中初始化后console.log(table)在浏览器控制台中查看值。
    • 啊,我完全忽略了这一点。它修复了错误。当我将 console.log(table) 添加到 JS 并检查控制台时,我收到此错误:“表未定义”(然后将我定向到我添加的行)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多