我一直在构建一个包含数百张图片的图片库,我不希望它们都在页面加载时加载,以解决明显的带宽问题。对于初学者,我说;
< body onload =“removeAttr(”src“)”……
你可以在GitHub gist或pastebin上发布完整的源代码吗?
这是一种更简单的方法。您无需添加和删除新的图像元素,只需更改 src 属于现有属性。
src
<ul class='imageMenu'> <li data-image="dog.jpg">dog</li> <li data-image="cat.jpg">cat</li> <li data-image="donkey.jpg">donkey</li> </ul> <img src="" id='selectedImage' /> <script> const img = document.querySelector('#selectedImage'); document.querySelectorAll('.imageMenu li').forEach(item => { item.addEventListener('click', evt => { img.setAttribute('src', evt.target.getAttribute('data-image')); }); }); </script>
不确定我是否完全理解您的问题,但我确实发现您的代码存在问题。
你在定义 var Imgsrc 在一个 if 块。如果表达式不正确,那么 Imgsrc 将不会被定义。然后在您的代码中,无论条件如何,您都可以使用它,而无需检查它是否首先定义。
var Imgsrc
if
Imgsrc
请参阅下面的代码注释。
<script type="text/javascript"> window.onclick = function(e) { var node = e.target; while (node != undefined && node.localName != 'a') { node = node.parentNode; } if (node != undefined) { if (this.id == 'alternate-image') { var Imgsrc = $(this).find('img').attr('src'); //<!---- here you define the Imgsrc var //but what if the this.id != 'alternate-image'?? alert(src); } var dv = document.getElementById('gallery'); // remove all child nodes while (dv.hasChildNodes()) { dv.removeChild(dv.lastChild); } alert("The button value is: " + node); var img = document.createElement("IMG"); img.src = Imgsrc; //<!---- need to check if this is defined. dv.appendChild(img); return false; // stop handling the click } else { alert('This is not a link: ' + e.target.innerHTML) return true; // handle other clicks } } </script>
您有机会发布您的HTML或更多细节,以便我们解决这个问题吗?