我想创建一个像这样的HTML图像元素:
<img src="www.example.com?param1=aid¶m2=sid¶m3=user¶m4=now" />
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
var now = new Date().getTime();
var aid = 123456;
var sid = 78910;
var user = "abcd";
Run Code Online (Sandbox Code Playgroud)
如何从这些数据创建元素?
您使用创建img
元素(而不是"标记")document.createElement('img')
.
您src
使用该src
元素的反射属性设置其字符串.要创建该字符串,现在,您将使用字符串连接(+
).但是,请参阅下面的ES6注释.
所以:
var img = document.createElement('img');
img.src = "www.example.com?param1=" + aid +
"¶m2=" + sid +
"¶m3 = " + encodeURIComponent(user) +
"¶m4=" + now;
Run Code Online (Sandbox Code Playgroud)
然后你想把它附加到DOM的某个地方.
请注意encodeURIComponent
非数字的.查询字符串中的名称和值都必须是URI编码的.但我没有打扰的param1
,param2
等等.因为我知道,他们的URI编码版本是...如出一辙.同样地,我知道数字的URI编码版本只是数字.但我看到的user
是一个文本值,我认为它并不总是"abcd"
如此,所以要防止我对其进行URI编码的问题.
你的评论:
并且假设我想为img元素添加属性,它就像img.height = 1和img.width = 1?
规范列出了img
元素的属性.是的,无论是height
和width
在那里,设置它们具有相同的效果与使用height
和width
属性,虽然你可能要使用样式表来代替.
并非所有属性都反映了属性.对于那些没有使用的人,你将使用setAttribute("name", value)
(如果该值不是一个字符串,则该值将被转换为字符串).
由于JavaScript中,ECMAScript6(ES6)的下一个版本,你可以使用一个模板字符串的src
,而不是:
var img = document.createElement('img');
img.src = `www.example.com?param1=${aid}¶m2=${sid}¶m3=${encodeURIComponent(user)}¶m4=${now}`;
Run Code Online (Sandbox Code Playgroud)