2012-02-22 5 views
0

私のhtml5 Webアプリケーションでは、DOMがロードされているときにhtml要素のいくつかの値を設定しています。使用される値は、DOMロードが開始された後、対応するhtml DOM要素が追加される前に決定されるいくつかのJavascriptグローバル変数から取得されます。今、私のコードのようなものに見えるの場合:「実行時」にhtml要素の値を設定します

myBtnText="some value"; 
//.... 

<input type="button" id="myBtn" onclick="DoSomeAction();" /> 
<script type="text/javascript"> 
    document.getElementById("myBtn").value = myBtnText; 
</script> 

をコードが働いているが、私はそれを改善したい、のdocument.getElementById(「myBtnです」)によって行われた呼び出しを避けるために、そしてまた作るためにコードを小さくする。

myBtnTextグローバル変数の値を取得するために助けることができる表現になります/ /
<input type="button" id="myBtn" value=/*<myBtnText>*/ onclick="DoSomeAction();" /> 

:私はそれのような何かを簡素化するために思っています。

可能であれば、どのように考えればいいですか?

答えて

1

あなたはjQueryのを使用した場合は、の線に沿って何かやっによってのdocument.getElementByIdの呼び出しを避ける行うことができます:フィールドの値を取得するために

$('#myBtn').val(); 

をして:

$('#myBtn').val("something"); 

へその値を設定します。あなたはここで多くを学ぶことができます。

http://api.jquery.com/val/

+0

私はjQueryのを使用している、と私は、要素の値を設定するこのモードについて知っているが、それはまだ(jQueryのjsファイルから)のdocument.getElementById(「myBtnです」)メソッドを呼び出します –

+0

さて、あなたの場合保守性の視点からのコード行を心配している場合は、JQueryを使用してください。ページのスピードやコンテンツの読み込み時間が懸念される場合は、伝統的な方法を使用するか、可能性としてdocument.writeを示唆するその他の回答を行う必要があります。他のもののためにJQueryをページに読み込んでいるのであれば、なぜその値を書き込む機能を使用しないのか分かりません。ドキュメントがロードされているときにこれを行う必要がありますが、ユーザーが差異を気付かないように十分速くなければなりません。 –

+0

Raul Marengo - jQueryがページに読み込まれていますが、ページの終わりに、ページの速度の問題からも配置されています。 –

0

うわー、何を?それはひどい構文のように見えます。 HTMLの中でperlを再開発しようとしていますか?あなたはそのようなことでパーサーを完全に破るでしょう! DOMの前にボタンの値を設定するのはなぜ

<script> 
function setValue(id, value) { 
    document.getElementById(id).value = value; 
} 
</script> 
+0

SpliFF - 問題はコードの量であり、別のものは、私が知っているにもかかわらず要素を取り出すためにDOMにアクセスする必要があり、それが私が知るまで見たものから "高価な操作"になるということです私はウェブサイトの開発にあまり経験がありません)。 htmlから要素の値を直接設定する可能性がある場合は、パフォーマンスの観点からも改善されます。 –

1

:あなたが解決しようとしている問題は、なぜあなたは同じように、適切な関数にコードを減らすことに焦点を当てていないコードの量であるように思われるので

準備はできていますか?これは、ページの解析中にこれを行う1つの方法です。

myBtnText="some value"; 
//.... 
/* some HTML */ 

    <SCRIPT> 
    document.write('<input type="button" id="myBtn" onclick="DoSomeAction();" value="'+myBtnText+'"/>'); 
    </SCRIPT> 

/* more HTML */ 
+0

Teemu - 私はこのアプローチについても考えていますが、グローバル変数の値を取得してhtmlで直接要素の値を設定するモードが存在することをホッピングしていました。あなたの答えは小さな更新が必要だと思います:document.write( ''); –

+0

「更新」の権利をお持ちで、悪いコードをおかけして申し訳ありません。しかしこれは、ページが解析されている間にJavaScriptで属性を設定する唯一の方法です。 PHPはもっと洗練されたソリューションを提供すると思いますか? – Teemu

関連する問題