2011-12-21 76 views
1

我正在寻找正确的方法将javascript嵌入html参数中。这是什么,我试图做一个例子:将Javascript嵌入HTML参数

<img src="source.png" height="<script> if(screen.width == 1920) 
           {document.write('60px');}</script>" 
           title="icon"/> 

我知道这种方式可以工作嵌入PHP,但我似乎无法得到它使用JavaScript工作。我对这个问题的了解有限,我需要一些帮助来解决这个问题。谢谢。

+0

你不能这样做。 – 2011-12-21 04:44:24

+0

是否有任何技巧或解决方法可以让这样的应用程序起作用? – user981053 2011-12-21 04:46:28

回答

4

请注意我添加到元素中的id="sourceImg",其中必须是对于每页每个元素都是唯一的。不这样做将意味着Javascript不会知道选择哪个元素,并会选择一个。

<img id="sourceImg" src="source.png" title="icon"> 

<script> 
if (screen.width == 1920) { 
    document.getElementById('sourceImg').style.height = '60px'; 
} 
</script> 

,要么需要运行的标记落在页面的源代码后,或在window.onload事件处理程序。如果它在img元素可用之前运行,它将会出错。

注意 - JohnFx的方法,他在评论描述如下:

<img id="sourceImg" src="source.png" title="icon" onload="sizeMe()"> 

<script> 
function sizeMe() { 
    if (screen.width == 1920) { 
    document.getElementById('sourceImg').style.height = '60px'; 
    } 
} 
</script> 

它使用img元素的onload处理。请注意,嵌入式事件处理程序(例如onload="",onclick=""等)通常被认为难以维护。但是,上述内容应该可以作为演示,其他路径涉及理解页面加载,DOM元素可用性以及比简单示例更难以理解的其他细节。

编辑

而且,技术上,你可以这样做:

<img id="sourceImg" 
    onload="if(screen.width < 1920) this.style.width='60px';" 
    src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/001_Jornal_Monsenhor_A_Comarca_23_de_Marco_de_1947.jpg/762px-001_Jornal_Monsenhor_A_Comarca_23_de_Marco_de_1947.jpg" 
    title="icon"> 

http://jsfiddle.net/pdN3y/

注意,我改变了if声明作出改变更加明显。

但是请不要。这是一个坏主意,也是一个不好的习惯。花一些时间搞清楚页面加载和DOM可用性,花费时间。

+0

这确实是正确的方法,你不能在Javascript标签内嵌入Javascript。 – keybored 2011-12-21 04:46:54

+0

您可能希望将其添加到仅在加载DOM元素后才执行的操作。 – JohnFx 2011-12-21 04:47:42

+0

谢谢你为我提供了一个合适的方法。 – user981053 2011-12-21 04:49:19

0

你不能那样做。你是对的 - 你的PHP正在干涉。有很多方法可以做到这一点,只是改变你的方法:

<script> 
    document.write("<img src='source.png' title='icon' " + screen.width == 1920 ? "height='60px'" : "" + " />"); 
</script> 
+0

哦,我不知道'document.write'元素出来实在是一种现代的做法,有很多更合适的方法可供使用...... – 2011-12-21 04:53:24

+0

我完全同意。就像我说的,我正在纠正他的方法,以便它的工作。从一种语言到另一种语言的过渡是一种非常个人化的体验,有时候,即使它不是新语言中的“可接受”成语,它也可能有助于看到你已经翻译成新语言的习语。 – drdwilcox 2011-12-21 13:58:20