InnerHtml赢得';t更新我的图片的src


InnerHtml won't update src of my image

我正在尝试更新图像的src,但在现场它只显示<img class="imagedisplayor" style="float: none;" alt="" width="200" height="200" src=""/>

这是代码:

function ajaxFigure(){
var url = 'index.php?option=com_fabrik&format=raw&view=plugin&task=userAjax&method=imgclasse';
var product = Fabrik.blocks.form_8.formElements.orders___product.getValue();
var update = $('orders___image').firstChild;
new Request({
    url: url,
    data: {
        method: 'imgclasse',
        'product': product
    },
    onComplete: function (r) {
        update.src = 'http://www.youtraining.eu/preview' + r.replace('images/', 'images/');
        document.getElementById('orders___image').innerHTML = '<img class=''imagedisplayor'' style=''float:none;'' alt=
''''  width=''200'' height=''200''  src="' + r + '">'
    }
}).send();

}

这里是我的imgClass()

function imgclasse() {
$db = JFactory::getDBO();
$IdClasse = JRequest::getVar("product", "");  
$query = "SELECT product_image from products WHERE id=$IdClasse LIMIT 1";
$db->setQuery($query);
$result = $db->loadResult();
echo $result; 

}

更新了所有内容。。我想做的是为数据库中的下拉列表中的每个元素显示一个图像。Js和PHP是我唯一可以使用的方法,因为我在CMS中。

已更改var product=Fabrik.blocks.form_8.formElements.orders___product.getValue();现在它返回正确的值。。但问题仍然存在

根据您的代码:

onComplete: function (r) {
        update.src = 'http://www.mysite.com/preview' + r.replace('images/', 'images/');
        document.getElementById('orders___image').innerHTML = '<img class=''imagedisplayor'' style=''float:none;'' alt=''''  width=''200'' height=''200''  src=' + r + '>'
    }

我假设update.src是一个定义为:的对象

var update= {src:"..."};

因此,当您将值传递给该对象的.src键时,其形式为:

update.src = 'http://www.mysite.com/preview' + r.replace('images/', 'images/');

然后:

document.getElementById('orders___image').innerHTML = '<img class=''imagedisplayor'' style=''float:none;'' alt='''' width=''200'' height=''200'' src=' + r + '>'

update.src交换r,因为r的值是您希望update.src包含的内容,包括.replace('images/', 'images/') 进行的替换

所以应该是:

document.getElementById('orders___image').innerHTML = '<img class=''imagedisplayor'' style=''float:none;'' alt='''' width=''200'' height=''200'' src=' + update.src + '>'

你可以确认你的r变量中是否真的有东西,或者是否通过做一些类似的事情来识别它:

onComplete: function (r) {
  console.log(r)
//Before running any other code

希望能有所帮助!

简单答案:

您没有使用新值更新图像源。您正在使用提供给函数的值更新它。在.中连接src属性时,还需要为其提供双引号

document.getElementById('orders___image').innerHTML = '<img class=''imagedisplayor'' style=''float:none;'' alt=''''  width=''200'' height=''200''  src="' + r + '">'

建议:

如果我是你,遇到这个问题,我会对你的新图像路径做一个console.log,以验证生成的路径与实际图像路径的对比。如果不知道提供给函数的r的值,很难判断。

我突然想到的另一件主要事情是,你不需要完全替换图像元素。如果直接获得对图像元素的引用,然后将其src属性更新为新位置,则会更干净。同样,如果没有更多的信息,很难给你任何更具体的信息。