我使用此代码根据用户输入动态创建DOM元素(示例1)。我还使用php / xhtml在重新加载时创建相同的元素(例2)。
问题我看到的是我的图像onerror事件仅适用于重新加载的版本。在这里,我使用传统的内联事件注册到i_bm_err
,它可以工作。
但是对于javascript版本,onerorr回调方法不会触发。
我的问题:我是否需要添加事件监听器?如果是这样,事件监听器的类型是什么?我尝试添加“错误”和“onerror”类型的事件监听器,但这不起作用。这让我觉得可能添加和永远的听众不是问题。
示例1
function o3(a)
{
return document.createElement(a);
}
var b=o3('a');
b.innerHTML=c[1].value;
b.href=c[2].value;
b.name="a1";
b.className="b";
b.target="_blank";
var e=o3('img');
e.className="c";
e.name="bo_im";
e.src=b.href+'favicon.ico';
e.onerror=function(e){e.src='http://www.archemarks.com/favicon1.ico';};
示例2
PHP / XHTML
function bookmarks()
{
$email = $_SESSION['email'];
$query_return = database::query("SELECT * FROM bo WHERE email='$email' ORDER BY name ASC");
while ($ass_array = mysqli_fetch_assoc($query_return))
{
$fav=$this->fav($ass_array['url']);
echo "<img name=\"bo_im\" class=\"c\" src=\"$fav\"/ onerror=\"i_bm_err(this)\"><a target=\"_blank\" name = \"a1\" class = \"b\" href = \"$ass_array[url]\">$ass_array[name]</a>";
}
}
的Javascript
function i_bm_err(a)
{
a.src='http://www.archemarks.com/favicon1.ico';
}
研究:
MDN - element.addEventListener
在上面的例子中,这个值在modifyText()中的时候 从click事件调用是对表't'的引用。这是 与在处理程序中添加处理程序时发生的行为形成对比 HTML源代码:
答案 0 :(得分:1)
正如@Paul Grime所提到的,你需要在设置src属性之前附加所有事件(错误,加载等)。