【问题标题】:Using JavaScript to add a JSON property value into a HTML element's attribute value使用 JavaScript 将 JSON 属性值添加到 HTML 元素的属性值中
【发布时间】:2014-04-30 20:35:26
【问题描述】:

我在 JSON 文件中有一些“img”属性,它们的值是 .jpg 文件路径(例如“images/image.jpg”)。

我正在尝试将这些值添加到现有 HTML 元素的 'src' 属性中,以下是我迄今为止尝试过的......

  1. 从 JSON 对象创建文本节点,然后尝试使用 '.setAttribute()' 方法将它们添加为 'src' 属性值,这会导致添加一个对象而不是作为字符串的 url 路径。

    var img = document.createElement("img"); var imgSrc = document.createTextNode(object); img.setAttribute(src, imgSrc);

  2. 使用 'JSON.stringify()' 方法将 JSON 值转换为字符串并将其添加为 img 元素的 'src' 属性值。这导致 src 属性被正确的路径填充,但它们被 %22 包围,大概代表了字符串周围的引号。

    var img = document.createElement("img"); var imgSrc = JSON.stringify(object); img.setAttribute(src, imgSrc);

关于如何实现我想要做的事情的任何想法?

提前致谢。

【问题讨论】:

  • JSON 对象结构是什么样的?
  • 这个问题真的不清楚。你确定你甚至有 JSON 吗? (记住 JSON 是一个 textual 表示法。) JSON 是什么样的?你怎么得到它?您是否已经对其进行了解析(您上面的代码引用了一个名为 object 的变量,它表明 JSON 文本已被解析)。

标签: javascript html ajax json


【解决方案1】:

听起来您有一个已经被解析为 JavaScript 对象的 JSON 字符串(或者您可能根本没有使用 JSON,而您的起点是对象)。您还没有告诉我们 JSON 是什么或对象结构是什么。在下面的评论中,您给出了其中的部分

"img": "_/images/image-one.jpg"

...但这本身就是无效的 JSON。我将假设实际的 JSON 如下所示:

{
    "img": "_/images/image-one.jpg"
}

...并且它已经被解析了,所以我们有一个从变量object 引用的对象,它有一个属性img,其中包含图像的URL。

要使用该对象的img 属性,您只需引用它:

var img = document.createElement("img");
img.src = object.img;

【讨论】:

  • JSON 字符串是图像的 url ("img": "_/images/image-one.jpg"。不确定这是否是不好的做法?(这是我的第一个 javascript/json我正在处理的项目)。我收到以下开发工具控制台错误消息“GET localhost/~user/website/%22images/image-one.jpg%22 404 (Not Found)”,我猜这是由于路径的其余部分正确,因此归结为 %22?
  • @dntz:我想我现在明白你的问题了。我已经更新了答案。
  • 对不起,阅读您的回答我现在意识到我的问题不清楚。我想象该属性必须对其进行处理,例如将属性放置在需要先附加到文本节点的元素中。我假设'img.src = object.img;'等于 img.setAttribute("src", object.img);,效果很好,你能告诉我我需要研究什么来学习 'img.src = object.img;' 背后的基础知识吗陈述。感谢您的帮助!
  • @dntz:不客气! “我假设'img.src = object.img;'等于img.setAttribute("src", object.img);,效果很好" 差不多。 src 是为 img 元素定义的 DOM 属性,它反映src 属性的值。有很多方便的反射属性。 大部分的时候,反射属性相当于使用属性,但有时也有区别。 (续)
  • (continuing) 例如,如果链接具有相对的 href 属性,则 href 属性包含 resolved 路径,而getAttribute 获取相对的 (example)。同样,输入元素上的value property 为您提供当前值,但 attribute 为您提供标记中的属性值 (example)。
猜你喜欢
  • 2015-07-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多