V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
getlost
V2EX  ›  JavaScript

节点的节点值能用作参数吗?

  •  
  •   getlost · 2019-12-10 23:50:15 +08:00 · 2665 次点击
    这是一个创建于 1834 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后台是用 Django 写的,我想模仿豆瓣电影写一个页面,把电影海报和名字、评分等信息放上去,以下是代码

    {% for film in movie %}
            <div class='movie'>
                <li id="film_path" hidden="hidden">{{ film.image_local_path }}</li> 
                // film.image_local_path 是从数据库里拉出来的图片地址,
                // 用了 Django 的 load staticfiles,数据长这样 "{% static 'image/26235346.jpg' %}",
                <li><img id="img" alt="图片不见了" /></li>
                <li>{{ film.name }}</li>
            </div>
        {% empty %}
            <p>这里没有东西</p>
        {% endfor %}
    

    以下为 JavaScript 代码,主要逻辑是找到 Id 为 film_path 的 li 标签文本节点值,然后赋值给 Id 为 img 的 img 标签,把图片加载到页面上。但是现在遇到一个问题,把节点值当做参数传入后,图片未加载。

     function changeImgSrc() {
                var film_img_li = document.getElementById("film_path");
                var film_path_childnode_nodeValue = film_img_li.childNodes[0].nodeValue; 
                var set_img_path = document.getElementById("img");
                set_img_path.setAttribute("src", film_path_childnode_nodeValue);
    

    当我把地址直接当做参数传入后,比如下面这样是可以实现想要的效果的,不知道问题出在哪了?

    set_img_path.setAttribute("src", "{% static 'image/26235346.jpg' %}");
    
    2 条回复    2019-12-11 23:01:38 +08:00
    crystom
        1
    crystom  
       2019-12-11 01:25:29 +08:00
    id 写在循环里重复了,应该是页面唯一才能找到
    getlost
        2
    getlost  
    OP
       2019-12-11 23:01:38 +08:00
    @crystom 应该不是这个问题,因为当我把地址直接传入之后,也就是把`{% static 'image/26235346.jpg' %}`直接传入和用节点值实现的效果不一致。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5987 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:12 · PVG 10:12 · LAX 18:12 · JFK 21:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.