0

私は仕事をすることができない機能を持っています。スタックオーバーフロー全体で同じ問題を検索しましたが、解決策が見つかりませんでした...

これは私の index.php のコード スニペットです。news/index.php を含む iframe があります。

<div id="hirek1">
    <iframe id="newsframe" src="news/index.php"></iframe>
</div>
<script type="text/javascript" src="mutato.js">milyenmagas();</script>

これが news/index.php です。その内容は php コードで、ニュースの長さに応じて出力の高さが動的に変化します。

<div id="hirekmagassag"><!--content--></div>
<script type="text/javascript" src="mutato.js">milyenmagas();</script>

関数 (mutato.js の):

function milyenmagas()
{
    if(document.getElementById('hirekmagassag') != null)
        var divmag = document.getElementById('hirekmagassag').offsetHeight;
        var framemag = (divmag + 10 + 'px');
    if(document.getElementById('hirek1') != null)
        var iframe = document.getElementById('hirek1').getElementsByTagName('iframe')[0];
    if(document.getElementById('hirek1') != null)
        iframe.height = framemag;
    if(document.getElementById('hirek1') != null)
        iframe.style.height = framemag;
setTimeout('milyenmagas();', 1000);
}

したがって、関数のポイントは、iFrame の高さをコンテンツの高さと同じ (スクロールバーを避けるために +10 ピクセル) に設定することです。上記のように、関数は両方の div の後に呼び出されます。これらは 2 回 (各ファイルで 1 回) 呼び出されるため、if は 2 つの php ファイル間の操作を分類するためのものです。

これは今のところうまくいきません。iframe.heightiframe.style.heightの値を変数framemagからたとえば「500px」に変更した場合を除いて、完全に機能します。何が間違っているのかわかりません。alert(framemag);と呼んでも スタイルパラメーターとして完全に機能するはずの正しい文字列をスローします。

ここで何が欠けていますか?

4

1 に答える 1

0

試す

function milyenmagas() {
    var hirekmagassag = document.getElementById('hirekmagassag');

    if (hirekmagassag != null) {
        var divmag = hirekmagassag.offsetHeight;

        var framemag = (divmag + 10) + 'px';

        var hirek1 = document.getElementById('hirek1');
        if (hirek1) {
            var iframe = hirek1.getElementsByTagName('iframe')[0];
            console.log(framemag)
            iframe.height = framemag;
            iframe.style.height = framemag;
        }

    }
    setTimeout('milyenmagas();', 1000);
}

デモ: Plunker - メッセージ div のサイズを変更して iframe のサイズを変更する

于 2013-04-23T03:10:42.790 に答える