Функция JavaScript - изменение содержимого в DIV - PullRequest
1 голос
/ 06 августа 2011

У меня проблема. У меня есть эта функция:

    function isDone()
{ 
    if(isDone){
    $("#loadingStatus").html("NOT DONE...");
    }else{
    $("#loadingStatus").html("#isDone");    
    }
}

Приведенный выше код НЕ работает. Приведенный выше код проверяет, загружен ли контент в iFrame.

Я хочу иметь div, который говорит, что если он НЕ загружен, «NOT DONE ...», но если он загружен, выведите еще один DIV в div #loadingStatus.

ОБНОВЛЕНИЕ:

Это мой 100% код.

<?php
$key = $_GET['key'];
$s=mysql_query("SELECT * FROM advertisements WHERE `key`='$key'")
or die(mysql_error());
$r=mysql_fetch_assoc($s);

?>
<script type="text/javascript" src="../divided/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="../dream/js/iframeLoad.js"></script>

<script type="text/javascript">
function isDone()
{ 
    if(isDone){
    $("#loadingStatus").html("Waiting for your advertisements to load...");
    }else{
    $("#loadingStatus").html($("#isDone").html());  
    }


}
</script>
</head>

<div style="height:10%">
    <table style="border:black;">
        <tr>
            <td><img src="../dream/images/logo.png"></td>
            <td><div id="loadingStatus"></div></td>
            <td>3</td>
        </tr>
    </table>

    <div id="isDone" style="display:none">

    </div>



</div>



<iframe onload="isDone()" src="<?php echo $r['url']; ?>" width="100%" height="90%" scrolling="auto" frameborder="0">
<p>Your browser does not support iframes.</p>
</iframe>

Ответы [ 7 ]

1 голос
/ 06 августа 2011

Поскольку функция не вызывается до тех пор, пока не загружен iFrame, не загруженное сообщение не появится.

Вам нужно иметь текст по умолчанию в isDone div.

1 голос
/ 06 августа 2011

http://jsfiddle.net/sMGTU/

<?php
    $key = $_GET['key'];
    $s=mysql_query("SELECT * FROM advertisements WHERE `key`='$key'")
    or die(mysql_error());
    $r=mysql_fetch_assoc($s);
?>

<script type="text/javascript" src="../divided/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="../dream/js/iframeLoad.js"></script>
<script type="text/javascript">
var iFrameLoaded=false;

function checkDone(iFrameLoaded)
{
    iFrameLoaded
       ? $("#loadingStatus").html("Finished Loading")
       : $("#loadingStatus").html("Waiting for your advertisements to load...");
}

</script>
</head>

<div style="height:10%">
    <table style="border:black;">
        <tr>
            <td><img src="../dream/images/logo.png"></td>
            <td><div id="loadingStatus"></div></td>
            <td>3</td>
        </tr>
    </table>
    <div id="isDone" style="display:none"></div>
</div>

<iframe onload="checkDone(true);"
        src="<?php echo $r['url']; ?>"
        width="100%" height="90%"
        scrolling="auto"
        frameborder="0">
   <p>Your browser does not support iframes.</p>
</iframe>
1 голос
/ 06 августа 2011

Возможно, вы ищете:

$("#loadingStatus").html($("#isDone").html());

РЕДАКТИРОВАТЬ: В вашем коде isDone является функцией, а не переменной.Из того, что я понимаю, вы должны сделать что-то вроде:

$(document).ready(function() {
    $("#loadingStatus").text("Waiting for your advertisements to load...");
});

function isDone()
{ 
    $("#loadingStatus").html($("#isDone").html());  
}
0 голосов
/ 06 августа 2011

функция isDone ()
{
если ( IsDone ) {

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

0 голосов
/ 06 августа 2011

Ну, NOTDONE будет никогда появляться, потому что нет переменной isDone, которая может оценивать true.Также кажется, что эта логика обратная.

Вместо этого установите сообщение «не выполнено» при загрузке основного документа, а затем замените его сообщением «сделано» при загрузке документа iFrame:

// on document load:
$(function() {
   // set "waiting" message:
   $("#loadingStatus").html("Waiting for your advertisements to load...");

   // on iframe load:
   $('#myIFrame').load(function() {
       // set "done waiting" message:
       $("#loadingStatus").html($("#isDone").html());
   });
});

Вот и все;это все, что вам нужно в Javascript.Уберите этот ужасный атрибут onLoad из вашей iframe разметки и дайте вещи идентификатор:

<iframe id="myIFrame" src="<?php echo $r['url']; ?>" width="100%" height="90%" scrolling="auto" frameborder="0">
<p>Your browser does not support iframes.</p>
</iframe>
0 голосов
/ 06 августа 2011

Где в коде установлена ​​переменная isDone? Есть ли у вас обработчик событий загрузки для iframe?

Попробуйте это

$(function(){

 $("#loadingStatus").html("Waiting for your advertisements to load...");

var isDone = false;
function checkIsDone()
{ 
    if(isDone){
       $("#loadingStatus").html("NOT DONE...");
    }else{
       $("#loadingStatus").html($("#isDone").html());    
    }
}

$("iframeSelector").load(function(){

  isDone = true;

});

checkIsDone();

});
0 голосов
/ 06 августа 2011

Если вы хотите создать новый div:

$("#loadingStatus").append($("<div/>").text("Done."));

Если вы хотите переместить div из другого места:

$("#loadingStatus").append($("#isDone"));

Если вы хотите скопировать div из другого местаelse:

$("#loadingStatus").append($("#isDone").clone());

Если вы хотите переместить содержимое элемента:

$("#loadingStatus").append($("#isDone").children());

Если вы хотите скопировать содержимое элемента:

$("#loadingStatus").append($("#isDone").children().clone());

Обновление:

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

function isDone() { 
  $("#loadingStatus").append($("#isDone").children().clone());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...