2014-02-13 2 views
0

У меня есть этот кусок кода:Изменение простой SRC с Ajax

function loadXMLDoc(h) 
    { 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     var getEle = document.getElementsByClassName('cut_oak_tree')[0]; 
      getEle.innerHTML = getEle.innerHTML.replace(h,xmlhttp.responseText); 
     } 
     } 
    xmlhttp.open("POST","i",true); 
    xmlhttp.send(); 
    } 

Что эта функция делает, является то, что при нажатии на изображение, изображение исчезает. Я хочу, чтобы это изменилось на другое изображение, и я пробовал такие вещи, как:

getEle.innerHTML = getEle.innerHTML.replace(h,xmlhttp.src="hello.png"); 

Не повезло. Страница содержит несколько изображений одного типа. если вы хотите увидеть код html, посмотрите:

<div class="cut_oak_tree"> 
      <img src="http://www.pbpixels.com/x/images/oak.png" onclick="loadXMLDoc(this.outerHTML), myFunction(this)" /> <!--DO NOT CHANGE SRC --> 
      <br> 
      <img src="http://www.pbpixels.com/x/images/oak.png " onclick="loadXMLDoc(this.outerHTML), myFunction(this)" /> <!--DO NOT CHANGE SRC --> 
      <img src="http://www.pbpixels.com/x/images/oak.png " onclick="loadXMLDoc(this.outerHTML), myFunction(this)" /> <!--DO NOT CHANGE SRC --> 
     </div> 

Заранее спасибо.

+0

вы можете предоставить jsfiddle демо –

ответ

0

Заменить это:

getEle.innerHTML = getEle.innerHTML.replace(h,xmlhttp.responseText); 

с этим:

var imgElems = getEle.getElementsByTagName('img'); 
for (var i = 0; i < imgElems.length; i++) { 
    imgElems[i].src = xmlhttp.responseText; 
} 

Вы можете определить путь для изображений, так что вы можете использовать imgElems[i].src = imagePath + xmlhttp.responseText;.

UPDATE

Таким образом, изменить теги IMG для этого (параметр loadXMLDoc изменяется):

<img src="http://www.pbpixels.com/x/images/oak.png" onclick="loadXMLDoc(this), myFunction(this)" /> 

Затем, вместо 4-линейной части я дал вам выше, используйте только это:

h.src = xmlhttp.responseText; // h now refers to the clicked image 
+0

Эмм, изображения, которые уже там не удаляются в настоящее время. При нажатии на изображение ничего не происходит. – user3287771

+0

Простите, что имя класса - это изображение, а не родительское ... Я исправлю его сейчас. – Shomz

+0

Должно быть хорошо. – Shomz

0

Вы новый новый образ обыкновение нагрузки автоматически, даже если путь является правильным

Вы можете заставить браузер перезагрузить изображение, передавая дополнительную переменную как так:

d = new Date(); 
getEle.src = "xmlhttp.responseText?"+d.getTime(); 
+0

Новый источник не будет применяться просто потому, что элементы div не могут иметь источник, независимо от того, сколько временных меток вы на них наложили. – Shomz

Смежные вопросы