Javascript onerorr回调方法未激发。是否需要事件侦听器?

Javascript onerorr回调方法未激发。是否需要事件侦听器?,javascript,Javascript,我使用此代码基于用户输入动态创建DOM元素(示例1)。我还使用php/xhtml在重新加载时创建相同的元素(示例2) 我看到的问题是,我的image onerror事件只适用于重新加载的版本。在这里,我使用传统的内联事件注册来I\u bm\u err,它可以正常工作 但是,对于javascript版本,onerorr回调方法不会启动 我的问题:是否需要添加事件侦听器?如果是,事件侦听器的类型是什么?我曾尝试添加类型为“error”和“onerror”的事件侦听器,但没有成功。这让我觉得添加和使用

我使用此代码基于用户输入动态创建DOM元素(示例1)。我还使用php/xhtml在重新加载时创建相同的元素(示例2)

我看到的问题是,我的image onerror事件只适用于重新加载的版本。在这里,我使用传统的内联事件注册来
I\u bm\u err
,它可以正常工作

但是,对于javascript版本,onerorr回调方法不会启动

我的问题:是否需要添加事件侦听器?如果是,事件侦听器的类型是什么?我曾尝试添加类型为“error”和“onerror”的事件侦听器,但没有成功。这让我觉得添加和使用evernt侦听器可能不是问题所在

例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>";
      }
    }
研究:

在上面的示例中,当 从click事件调用的是对表“t”的引用。这是 与将处理程序添加到 HTML来源:


正如@Paul Grime提到的,在设置src属性之前,您需要附加所有事件(错误、加载等)。

o3函数做什么?它是否创建元素并将其添加到DOM中?在这种情况下,在连接错误处理程序之前设置映像的
src
属性可能不起作用。您是否试图在编写代码时混淆代码?如果你真的那么需要它,那就在以后使用一个迷你器/模糊器。我正在写最小化的代码…我现在正在还原它。
function i_bm_err(a)
  {
  a.src='http://www.archemarks.com/favicon1.ico';
  }