Ajax - getElementById在多个div中创建文本

时间:2013-08-19 09:56:44

标签: html ajax getelementbyid

嘿伙计们,抱歉我的英语前锋不好。

我有这段代码:

<body>
    <div id="left">
    <p><a name = "container" value="topright" href="javascript:handleContent('topright')" onclick="loadContent('hallo1.php');">Hallo Welt 1</a></p>               
    <p><a name = "container" value="bottomright" href="javascript:handleContent('bottomright')" onclick="loadContent('hallo2.php');">Hallo Welt 2</a></p>
    </div>
    <div id="topright"></div>
    <div id="bottomright"></div>
</body>

和Ajax:

    var xmlHttpObject = false;

if (typeof XMLHttpRequest != 'undefined') 
{
    xmlHttpObject = new XMLHttpRequest();
}
if (!xmlHttpObject) 
{
    try 
    {
        xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) 
    {
        try 
        {
            xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) 
        {
            xmlHttpObject = null;
        }
    }
}

function loadContent(id){    
    xmlHttpObject.open('get', id);
    xmlHttpObject.onreadystatechange = handleContent;
    xmlHttpObject.send(null);

    return false;
}

function handleContent(){
    if (xmlHttpObject.readyState == 4)

    {
        document.getElementById('topright').innerHTML = xmlHttpObject.responseText;
    }
}

如果我点击“Hallo Welt 1”,我想在右上方的div中回显Hallo1.php。 因此,如果我单击“Hallo Welt 2”,我想在右下角div中回显Hallo2.php。 我的Ajax代码中有些东西是错误的。请帮助我,我是新的:)

先谢谢

1 个答案:

答案 0 :(得分:0)

基本问题是如何将参数传递给handleContent。 href =“”目前没有做任何事情。 解决方案是通过一个封盖传递“topright”或“bottomright”。这是这样的:

(function (t){
    return function(){
        handleContent(t);
    }
})(target);

这将创建一个直接调用的函数,并返回一个“绑定”参数的函数(这称为闭包)。

我认为你的德语: Dumusstdafürsorgendas deine Argumenterichtigübertragenwerden。 Das machst du am einfachsten mit einem sogenannten Closure(eine Funktion die deinen参数in sich selbst speichert)。

解决方案(在Firefox中测试):

<body>
    <div id="left">
    <p><a name = "container" value="topright" onclick="loadContent('hallo1.php', 'topright');">Hallo Welt 1</a></p>               
    <p><a name = "container" value="bottomright" onclick="loadContent('hallo2.php', 'bottomright');">Hallo Welt 2</a></p>
    </div>
    <div id="topright"></div>
    <div id="bottomright"></div>
    <script>

var xmlHttpObject = false;

if (typeof XMLHttpRequest != 'undefined') 
{
    xmlHttpObject = new XMLHttpRequest();
}
if (!xmlHttpObject) 
{
    try 
    {
        xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) 
    {
        try 
        {
            xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) 
        {
            xmlHttpObject = null;
        }
    }
}

function loadContent(id, target){    
    xmlHttpObject.open('get', id);
    xmlHttpObject.onreadystatechange = (function(t){return function(){ return         handleContent(t);}})(target);
    xmlHttpObject.send(null);

    return false;
}

function handleContent(target){
    if (xmlHttpObject.readyState == 4)

    {
        document.getElementById(target).innerHTML = xmlHttpObject.responseText;
    }
}
</script>
</body>