1

たとえば、今私は持っています:

<textarea style='width:100%;height:300px' id='default_file' readonly="readonly">
{$defaultFileContents[0]|escape}  // smarty code  
</textarea>

ただし、次のようなものを表示したい(たとえば、[次へ]ボタンをクリックした場合)。

<textarea style='width:100%;height:300px' id='default_file' readonly="readonly">
{$defaultFileContents[1]|escape}  // smarty code
</textarea>

インデックス2、3、4など。

$ defaultFileContentsは、PHPスクリプトから取得した文字列の配列です。

編集:

{literal}
<script language="javascript" type="text/javascript" src="modules/Yastt/views/tpls/editarea/edit_area/edit_area_full.js"></script>
<script language="javascript" type="text/javascript">

editAreaLoader.init({
    id : "default_file"     // textarea id
    ,syntax: "{/literal}{$fileType}{literal}"           // syntax to be uses for highgliting
    ,start_highlight: true      // to display with highlight mode on start-up
    ,allow_toggle: true
    ,is_editable:false

});

editAreaLoader.init({
    id : "translated_file"      // textarea id
    ,syntax: "{/literal}{$fileType}{literal}"           // syntax to be uses for highgliting
    ,start_highlight: true      // to display with highlight mode on start-up
    ,allow_toggle: true

});


{/literal}
</script>
<table><tr><td colspan='2'>
    <div style='font-size:18px;font-weight:bold;'>File Edit ({$defaultLang} To {$translatedLang})

    </div>
</td></tr>

<tr><td>
<div style='font-size:18px;font-weight:bold;'>{$file}</div>
</td></tr></table>



<textarea style='width:100%;height:300px' id='default_file'>
{$defaultFileContents[0]|escape}
</textarea>


<form method='POST' name='FileEdit' action='index.php'>
<input type='hidden' name='module' value='Yastt'>
<input type='hidden' name='action' value='saveraw'>
<input type='hidden' name='lang' value='{$translatedLang}'>
<input type='hidden' name='file' value='{$file}'>
<input type='submit' value='Save'>
<input type='button' value='Cancel' onclick='document.location.href="index.php?module=Yastt&action=overview&lang={$translatedLang}"'>
<input type='button' value='Copy From Above' onclick='document.getElementById("translated_file").value = decodeURIComponent("{$defaultFileContents[0]|escape:'url'}");'>
<textarea style='width:100%;height:500px' name='rawfile' id='translated_file'>
{$translatedFileContents|escape}
</textarea>
</form>
<br>

</form>

このtplコードをどのように変更しますか?

4

2 に答える 2

1

メッセージの配列をJavaScriptの配列に変換する必要があります。あなたはjson_encodeそれを簡単にするために使うことができます:

$message = array( "Message 1", "Message 2", "Message 3" );

// var messages = ["Message 1","Message 2","Message 3"];
printf("var messages = %s;", json_encode( $message ));

次に、HTMLを準備します。

<textarea id="default_file"></textarea><br/>
<button id="advance_text" onclick="advanceMessage()">Next</button>

通常、JavaScript側からクリックバインディングを実行しますが、今のところはそのままにしておきます。

// Reference to our textarea, build messages array, set message counter:
var textarea = document.getElementById("default_file");
var messages = [ "First Message", "Second Message", "Third Message" ];
var currMesg = 0;

// Advance to the next message
function advanceMessage() {
    textarea.value = messages[ currMesg++ % messages.length ];
}

// Call immediately to load first message
advanceMessage();

フィドル: http: //jsfiddle.net/hCMs8/

于 2012-05-29T22:31:14.290 に答える
0

私はこのようなことをします:

私はこれまでsmartyを使用したことがないので、必要なテキストをsmartyから配列に取り込むために必要なことは何でもしてください。

var text_from_smarty = [ "{$defaultFileContents[0]|escape}", "{$defaultFileContents[1]|escape}"]; // etc
var visible_text_index = 0;

次にヒットしたら、次のような関数を呼び出します。

function show_next_text(){
    document.getElementById('default_file').innerHTML = text_from_smarty[ (visible_text_index++)%text_from_smarty.length ];
}

これがjsfiddleです:http://jsfiddle.net/6dmFY/

于 2012-05-29T22:24:20.623 に答える