我在尝试动态添加和执行包含内联Javascript的div时遇到问题?
var div = document.createElement('DIV'); div.onready = (function(name) { return GA_vitalFillSlot(name); })(wallpaper_ads.custom[i]); document.getElementById('wallpaperAdContainer').appendChild(div);
其中wallpaper_ads.custom[i]
包含字符串,例如'BMX_wallpaper_2328x1080_homepage'。
上面的代码不起作用。但是,如果我将GA_vitalFillSlot()
更改为alert()
:
var div = document.createElement('DIV'); div.onready = (function(name) { return alert(name); })(wallpaper_ads.custom[i]); document.getElementById('wallpaperAdContainer').appendChild(div);
此外,做这样的事情也不起作用:
var js = document.createElement('SCRIPT'); js.type = 'text/javascript'; js.innerHTML = 'GA_vitalFillSlot("'+wallpaper_ads.custom[i]+'");'; document.getElementById('wallpaperAdContainer').appendChild(js);
这里有什么问题吗?
答案 0 :(得分:1)
或者:
js.src = 'myCode.js';
或
js.text = 'alert("hey");';
使用innerHTML插入的脚本无法执行。
答案 1 :(得分:1)
这行代码:
(function(name) { return GA_vitalFillSlot(name); })(wallpaper_ads.custom[i]);
正在立即执行div.onready
设置等于GA_vitalFillSlot(name)
的结果。更改它,以便onready指向一个函数:
div.onready = (function(name) {
return function() {
GA_vitalFillSlot(name);
};
})(wallpaper_ads.custom[i]);
答案 2 :(得分:0)
这应该有效
js.src = 'GA_vitalFillSlot("'+wallpaper_ads.custom[i]+'");';