如何将图片加载到同一页面而不是新页面上

时间:2015-02-19 10:11:11

标签: javascript jquery html

我有三个下拉菜单,根据所选内容生成结果。按下按钮"显示图片"它在新页面上打开了图片。我希望它加载到同一页面上。



function f(){
    var gid=function(i){return document.getElementById(i);};
    var product_id=gid("one").value;
    var version_id=gid("two").value;
    var arch_id=gid("three").value;
    if(product_id==='default' || version_id ==='default' || arch_id === 'default'){return;}
    window.location.replace('images/' +product_id + '_' + version_id + '_' + arch_id + '.jpg');   
}

<select id="one">
    <option value="value-a1">string1</option>
    <option value="value-a2">string2</option>
    <option value="value-a3">string3</option>
</select>

<select id="two">
    <option value="value-b4">string4</option>
    <option value="value-b5">string5</option>
    <option value="value-b6">string6</option>
</select>

<select id="three">
    <option value="value-c6">string7</option>
    <option value="value-c7">string8</option>
    <option value="value-c8">string9</option>
</select>
<input onclick="Javascript:f();" value="Show picture" type="button"/>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:1)

创建一个空<img></img>标记,并使用此 JQuery 函数更改其来源:

function f(){
    var gid=function(i){return document.getElementById(i);};
    var product_id=gid("one").value;
    var version_id=gid("two").value;
    var arch_id=gid("three").value;

    if(product_id==='default' || version_id ==='default' || arch_id === 'default'){
        return;
    }

    $("#idOfTheNewImageTag").prop('src', product_id + '_' + version_id + '_' + arch_id + '.jpg');   
}

答案 1 :(得分:0)

拉进你的代码,我可以看到它用你生成的网址替换了当前的浏览器网址(没有打开另一个浏览器选项卡或窗口) - 所以浏览器(在我的情况下为chrome)导航到你的URL生成(这正是 location.replace 的目的)。

您的意思是要将图像加载到另一个标记/ div / span / image吗?


加载新的div / image(使用jquery):

$("<div>").appendTo("body").load(newUrl);

$("<img>").attr("src", newUrl).appendTo("body");

使用原始js:

var img = document.createElement("img");
img.setAttribute("src", newUrl);

(使用insertBefore等在dom中移动元素)

HTH!

答案 2 :(得分:0)

尝试使用链接

window.open('images/' +product_id + '_' + version_id + '_' + arch_id + '.jpg','_self');

答案 3 :(得分:0)

这样做,@ Zeratops的回答将需要JQuery来完成工作,下面的代码不会。

function f(){
var gid=function(i){return document.getElementById(i);};
var product_id=gid("one").value;
var version_id=gid("two").value;
var arch_id=gid("three").value;

if(product_id==='default' || version_id ==='default' || arch_id === 'default'){
    return;
}

gid("idOfTheNewImageTag").src='images/'+product_id + '_' + version_id + '_' + arch_id + '.jpg';   
}

答案 4 :(得分:0)

在html代码中添加新div。在JSFIDDLE

中进行演示
<div id="img"> </div>

包括Jquery并使用此功能。

 function f(){
    var gid=function(i){return document.getElementById(i);};
    var product_id=gid("one").value;
    var version_id=gid("two").value;
    var arch_id=gid("three").value;
    if(product_id==='default' || version_id ==='default' || arch_id === 'default'){return;}       

     var img = $("<img />").attr('src', 'http://www.w3schools.com/images/w3css.gif')
    .load(function() {
        if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
            alert('broken image!');
        } else {
            $("#img").html(img);
        }
    });    
}