Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法引用图像id javascript_Javascript_Image_Resize_Getelementbyid - Fatal编程技术网

无法引用图像id javascript

无法引用图像id javascript,javascript,image,resize,getelementbyid,Javascript,Image,Resize,Getelementbyid,我有一个显示公告的PHP页面,文本中嵌入了一个图像。我在这里添加了简化代码。问题是,当我尝试更改图像的大小时,DOM无法引用该图像。在实际的文件中,如果我新加载页面,图像将无法被引用,但是如果我导航回它(使用日期选择器),Javascript的大小调整会突然正常工作。只是在第一次加载图像时不起作用 function resizeImg () { var w=document.getElementById("textImg").width; var h=docume

我有一个显示公告的PHP页面,文本中嵌入了一个图像。我在这里添加了简化代码。问题是,当我尝试更改图像的大小时,DOM无法引用该图像。在实际的文件中,如果我新加载页面,图像将无法被引用,但是如果我导航回它(使用日期选择器),Javascript的大小调整会突然正常工作。只是在第一次加载图像时不起作用

function resizeImg () {
        var w=document.getElementById("textImg").width;
        var h=document.getElementById("textImg").height;
        alert(h+" "+w);
        if (w>300 || h>300) {
            if (w>300) {
                var factor=((300/w));
            } else {
                if (h>300) {
                    var factor=((300/h));
                }
            }
            w*=factor;w=Math.round(w);
            h*=factor;h=Math.round(h);
            document.getElementById("textImg").style.width=w+"px";
            document.getElementById("textImg").style.height=h+"px";

        }
    }//end FUNCTION
标题:

<?php 
    $pic="20130213.gif";
    $blText="Yes, you heard right. Thats all we are going to have for dinner. Why?  because cream of corn is good when you put sugar in it, with some pepper and butter. So, quit your complaining and eat the slop.";
?>

HTML:



您是否尝试将js代码放入window.onload?

您可能需要等待图像加载:

el = document.getElementById("textImg");

if (el.addEventListener){
  el.addEventListener('load', resizeImg, false); 
} else if (el.attachEvent){
  //IE uses attachEvent
  el.attachEvent('onload', resizeImg);
}
在此之前,您应该等待DOM就绪,否则document.getElementById可能找不到任何内容。

()

这里的问题是你在努力

var w=document.getElementById("textImg").height;
但这只在您自己设置高度时起作用。否则,您需要使用以下选项之一:

var h = document.getElementById('someDiv').clientHeight;
var h = document.getElementById('someDiv').offsetHeight;
var h = document.getElementById('someDiv').scrollHeight;
clientHeight包括高度和垂直填充

远视包括高度、垂直填充和垂直边框

scrollHeight包括所包含文档的高度(在滚动的情况下会大于高度)、垂直填充和垂直边框

资料来源:


宽度当然相同。

你有这个脚本的工作副本吗?还有,为什么在最后要回显脚本和resizeImg函数?为什么不将其保留为HTML?图像的可能副本
也有一个
onload
事件。RuralJuror:我正在尝试一切。我没有理由尝试…只是绝望?除了我的计算机上,我没有脚本的工作副本。上面是复制粘贴从一个小的测试文件,我做…它是不工作的。我唯一忘记输入的部分是$pic和$blText变量,它们在标题中初始化:这应该是一个注释,而不是答案!哎呀,我忘了我现在有评论权限了。我不确定这会做什么。我认为这是在加载实际图像之前运行的代码的问题,因此不是在DOM中。不过我会试试的。当然,是的,总是要确保加载了DOM。关于必须等待图像加载,你是对的。但在这种情况下,不必等待DOM加载,因为函数调用在标记中的textImg之后。现在,它在没有这些更改的情况下工作。我可以得到它的高度和宽度,仅供参考。我只是在函数中使用了window.onload=,我不确定这是否是cross broser。正如您可以在jsFiddle中测试的那样,尝试只使用height而不使用offsetheight将给出一个未定义的值。它也可能发生在不同的浏览器中。
var h = document.getElementById('someDiv').clientHeight;
var h = document.getElementById('someDiv').offsetHeight;
var h = document.getElementById('someDiv').scrollHeight;