(Pour des informations plus loin, cela se rapporte à la même pièce de travail en tant que previous question)Javascript: Dynamiquement créé des éléments HTML faisant référence à un objet instancié
Je crée un système de discussion en ligne basé de l'aide de JavaScript jQuery pour rendre la vie beaucoup plus facile. Tout le code JavaScript du webchat est dans un fichier js externe, qui est ensuite référencé et instancié par la page html.
<html xmlns="http://www.w3.org/1999/xhtml">
WebchatV3
<div style="float:right;width:300px;" >
<div id="MembersBox">
Members
<ul id="MembersList" >
</ul>
</div>
<div id="QuestionsBox">
Questions
<div id="QuestionsList" >
</div>
</div>
</div>
<div style="margin-right:310px;" id="ChatBox" >
<div id="ChatData">
<ul id="ChatDataList"></ul>
</div>
<div id="ChatInput">
<div id="ChatInputCharRemainText">Characters remaining <span id="ChatInputCharRemain" ></span></div>
<input type="text" maxlength="1000" id="ChatInputTextbox" />
</div>
</div>
</div>
<script type="text/javascript">
var webchat;
webchat = new AvonAndSomerset.WebchatV3(123, 'passcode', false);
</script>
En JavaScript, il est code pour créer dynamiquement une liste des membres de chat actifs d'une requête JSON. Ce code crée une série de DIVs html, puis injecte ce html dans le DIV 'QuestionsList' présent dans le HTML.
Maintenant, voici la question :)
Au sein de chaque question sont des éléments avec JavaScript onclick événements qui permet des actions à prendre contre la question indiquée. Comment puis-je créer le code onclick sans coder en dur la référence à «webchat» - existe-t-il un moyen élégant et acceptable?
Mes premières pensées doivent passer le nom d'instance de l'instance « webchat » lors de sa création, il peut alors être utilisé dans le JavaScript lors de la création JavaScript dynamique ...
Exemple de code avec disque référence codée instantited « webchat »:
<div id="QuestionsBox">
Questions
<div id="QuestionsList">
<div class="Question">
<div class="QuestionInnerControls">
<img src="images/arrow_up.png" alt="" class="ControlIcon" onclick="webchat.Questions.Move(1,1);" >
<img src="images/arrow_down.png" alt="" class="ControlIcon" onclick="webchat.Questions.Move(1,-1);">
<img src="images/delete.png" alt="" class="ControlIcon" onclick="webchat.Questions.Delete(1);">
</div>
<div class="QuestionInnerText">
1) <b>Peter Bridger</b>: This is the question text
<br style="clear: right;">
</div>
</div>
</div>
Le nom de l'instance changera-t-il? Quel est le problème avec 'hardcoding' le nom d'instance de webchat si vous savez qu'il sera toujours instancié avec le handle 'webchat'? – KyleFarris
Je ne peux pas le voir changer - je suppose que je pose cette question du point de vue des bonnes pratiques. –