0

自分のサイトで valum ファイル アップローダの複数のインスタンスを動作させようとしています。1 つのインスタンスで問題なく動作しますが、初期化コードをループするたびに複数のボタンが必要になり、ボタンが表示されません。コードは次のとおりです。

<cfoutput query="getTopics">

<script>        
    function createUploader(){            
        var uploader = new qq.FileUploader({
            element: document.getElementById('file-uploader#refTopicID#'),
            action: 'components/ProjectBean.cfc',
            params: {method: 'Upload',
                    topicID: #refTopicID#,
                    count: #Evaluate("session.#refTopicAbv#Count")#,
                    topicName: '#refTopicAbv#'
                    },
            encoding: 'multipart'
        });           
    }

    // in your app create uploader as soon as the DOM is ready
    // don't wait for the window to load  
    window.onload = createUploader;     
</script>

<div class="row" id="file-uploader#refTopicID#">        
</div>

複数のインスタンスを取得する方法はありますか? 前もって感謝します!

4

1 に答える 1

1

ループ内で JavaScript 関数を作成しています。つまり、複数回定義しています。

代わりに、 createUploader 関数をループの外に移動する必要があります。ループ内では、トピックごとに複数回呼び出すだけです。

このようなもの:

<script>        
    function createUploader(elementID, topicID, topicCount, topicName){            
        var uploader = new qq.FileUploader({
            element: document.getElementById(elementID),
            action: 'components/ProjectBean.cfc',
            params: {method: 'Upload',
                    topicID: topicID,
                    count: topicCount,
                    topicName: topicName
                    },
            encoding: 'multipart'
        });           
    }   
</script>

<cfoutput query="getTopics">
<script>        
    createUploader('file-uploader#getTopics.refTopicID#', #getTopics.refTopicID#, #session[getTopics.refTopicAbv & "Count"]#, '#getTopics.refTopicAbv#');   
</script>

<div class="row" id="file-uploader#getTopics.refTopicID#"> </div>
</cfoutput>

注意: 値はすべて query から取得されていると想定しているgetTopicsため、適切にスコープを設定するためにクエリ名を前に付けました。これは通常は必須ではありませんが、(特に) パフォーマンス上の理由から良い習慣です。

于 2013-10-07T12:51:48.660 に答える