如何根据性别值设置图片on-error时的默认图片?
解决图片加载失败时按性别显示默认图的问题
你的代码存在核心问题:在PHP的echo语句里嵌套<?php ?>标签是错误的——当前已经处于PHP执行环境中,这些嵌套的PHP标记不会被解析,反而会被当作普通文本输出到页面,导致onerror事件无法正常生效。
下面是两种正确的实现方式:
方式一:先确定默认图再拼接输出
先根据性别变量提前确定默认图片路径,再一次性输出完整的<img>标签,代码更简洁:
// 根据性别获取对应默认图片 $default_img = $_row['gender'] === 'Male' ? 'male-default.jpg' : 'female-default.jpg'; // 输出图片标签,包含加载失败后的处理逻辑 echo "<img src='imagefolder/{$_row['img']}' onerror=\"this.src='{$default_img}'\">";
方式二:分条件输出onerror属性
如果更习惯分步处理,可以在echo过程中通过PHP条件判断输出对应的onerror属性:
// 输出img标签的开头部分 echo "<img src='imagefolder/{$_row['img']}' "; // 根据性别判断输出对应的onerror事件 if ($_row['gender'] !== 'Male') { echo "onerror=\"this.src='female-default.jpg'\""; } else { echo "onerror=\"this.src='male-default.jpg'\""; } // 闭合img标签 echo ">";
注意事项
- 注意引号的使用:如果echo用双引号包裹字符串,内部属性的双引号需要用反斜杠
\转义,避免语法错误;也可以用单引号包裹属性值,减少转义操作。 - 确保默认图片的路径正确,和当前页面的相对位置匹配,否则默认图也会加载失败。
内容的提问来源于stack exchange,提问作者ravi
相关产品推荐
相关产品推荐

