我正在使用Visual Studio。如果我在本地主机上调试它,我的javascript功能正常,函数非常简单,mouseOver上的照片更改。
但是在我将文件上传到服务器后,此功能无效。我在Chrome,Firefox,IE和Safari上尝试过它:
function mouseOver1()
{
var category1 = document
.getElementById('ctl00_ContentPlaceHolder1_lblItemID')
.innerHTML + '_1.jpg';
document
.getElementById('<%= iPhotoMain.ClientID.Replace("$","_") %>')
.src = 'photos/product/' + category1;
}
<img id ="photo1"
src ="photos/product/noImage.gif"
onmouseover="mouseOver1();"
class="thumbpic"
runat ="server" />
答案 0 :(得分:2)
根据OP的评论,我的原始答案部分不正确(虽然我仍然认为您不应该使用lblItemID
的静态ID - 所以将在下面留下答案。)
我的新猜测是您在页面的某处定义了第二个 mouseOver1();
函数,或者更可能是您要链接的外部JavaScript文件至。因此,我建议您检查您链接到的服务器上的所有外部JavaScript文件,并确保它们符合您的预期。
我可以推荐firebug for firefox或IE和Chrome下的开发者工具(两者都是F12)。使用firebug,您可以在 next Javascript上断点,这样您就可以轻松找到呼叫的去向
原始答案
我的猜测是您混淆了对象ID。您还使用静态字符串来查找其中一个对象。
如果我是对的,请试试这个 - 如果我的猜测不正确,我会很乐意删除我的答案。
(注意,我已将iPhotoMain
更改为photo1
)
function mouseOver1(){
var category1 = document
.getElementById('<%=lblItemID.ClientID%>')
.innerHTML + '_1.jpg';
document
.getElementById('<%=photo1.ClientID%>')
.src = 'photos/product/' + category1;
}
答案 1 :(得分:0)
也许在服务器上,您的网页(数据)比本地慢。所以用javascript尝试回调函数。像这样......
var category1 = "";
function mouseOver1(callback)
{
category1 = document
.getElementById('ctl00_ContentPlaceHolder1_lblItemID')
.innerHTML + '_1.jpg';
callback();
}
function mouseOver2()
{
document
.getElementById('<%= iPhotoMain.ClientID.Replace("$","_") %>')
.src = 'photos/product/' + category1;
}
<img id ="photo1" src ="photos/product/noImage.gif" onmouseover="mouseOver1(mouseOver2);" class="thumbpic" runat ="server" />