【问题标题】:How can I add an img element using javascript?如何使用 javascript 添加 img 元素?
【发布时间】:2016-03-31 04:06:24
【问题描述】:

在我的网站中,用户有一个文本区域,他/她可以在其中为帖子输入文本或图像,然后单击 a 按钮。单击的按钮链接到一个 java 脚本函数,该函数动态创建一个包含帖子内容和用户名和个人资料图片的文章元素。 我的代码可以创建新的文章元素,但我面临两个问题:

  1. 每当我再次单击发布时,它都会在前一个元素中创建一个新文章元素。
  2. 我需要创建的 img 元素没有固定的 src。

这是我这部分的 html

<article class="posts">
   <img  id = "profilePic" class="peopletofollowimg" src=Profile.jpg alt="View Profile Picture">
    <textarea id="posting-area" rows="6" cols="90" placeholder="Share Your Thoughts!"></textarea>



    <button onclick="createPost()" id="post-button">Post!</button>

</article>

<article id="myarticle" class="posts">

</article>

这是我的 js 代码

<script>

document.getElementById("post-button").onclick = createPost;
var el = document.getElementById("post-button");
if (el.addEventListener)
    el.addEventListener("click", createPost(), false);
else if (el.attachEvent)
    el.attachEvent('onclick', createPost());

function createPost(){
    var article = document.createElement("article");
    article.setAttribute("id", "myarticle");
    article.className = "posts";

    var p = document.createElement("p");
    //p.setAttribute("id", "postContent");
    p.innerHTML = document.getElementById("posting-area").value;

    var img = document.createElement("img");
    //img.setAttribute=("src", document.getElementById("profilePic"));
    // img.innerHTML = document.getElementById("profilePic");
    img.getAttribute("src");
    img.className = "peopletofollowimg";

    // test case, append the content
    document.body.appendChild(article);
    document.getElementById("myarticle").appendChild(p);
    document.getElementById("myarticle").appendChild(img);

}
 </script>

【问题讨论】:

  • addEventListenerattachEvent 的参数必须是 createPost,而不是 createPost()
  • img.getAttribute("src") 什么都不做。它返回源,但不做任何事情。

标签: javascript html dynamic web


【解决方案1】:

ID 必须是唯一的。您正在创建与页面上的元素具有相同 ID 的新元素,因此当您执行 .getElementById("myarticle") 时,它始终会选择找到的第一个元素。

与其创建和附加元素,然后选择添加其内容,不如立即添加内容。

function createPost(){
    var article = document.createElement("article");
    article.className = "posts";

    var p = document.createElement("p");
    p.innerHTML = document.getElementById("posting-area").value;

    var img = document.createElement("img");
    img.className = "peopletofollowimg";

    article.appendChild(p);
    article.appendChild(img);

    document.body.appendChild(article);
}

不确定img 没有固定的src 是什么意思,但您可以轻松地给它任何您想要的值。

img.src = "some/path/to/image.png";

就像 Barmar 所说的绑定处理程序,您不应该调用该函数。现在你只绑定第一个。如果你修复了调用,你最终会绑定它两次。

改为这样做:

var el = document.getElementById("post-button");

if (el.addEventListener)
    el.addEventListener("click", createPost, false);
else if (el.attachEvent)
    el.attachEvent('onclick', createPost);
else
    el.onclick = createPost;

【讨论】:

  • 我不知道该怎么做,有什么想法吗?
  • 我的意思是,例如在 facebook 上,当您发布内容时,该帖子旁边会显示您的个人资料图片。我的代码应该从数据库中获取用户的个人资料图片。我是否以错误的方式实现它?对不起,我还是个初学者
  • @Noha:这是一个更大的话题。您可能需要一些服务器端技术来动态创建页面或将其放入 cookie 或其他东西中。您也可以在 JavaScript 中执行此操作,但您首先仍然需要有一个可以从中获取的源。设置完成后,您可以使用 XHR 请求来获取数据。
猜你喜欢
  • 2011-12-09
  • 2021-12-13
  • 2019-04-15
  • 1970-01-01
  • 2020-10-15
  • 2016-01-07
  • 2015-02-12
  • 2021-11-29
  • 1970-01-01
相关资源
最近更新 更多