[英]Injecting data in html with javascript
使用服務器端腳本,就像在這樣注入HTML(ASP.NET)中的數據一樣簡單:
//Assuming theTime is a variable
<h1>the time is, @theTime</h1>
但在JavaScript中,基本上需要:
創建一個元素:
<h1></h1>
給它一個ID:
<h1 id="whatever"></h1>
創建一個腳本標簽:
<script></script>
通過其ID找到該元素:
document.getElementById("whatever")
然后使用innerHTML修改它的內容:
document.getElementById("whatever").innerHTML = "Hi, " + TheTIme;
最終代碼:
<h1 id="whatever"></h1>
<script>
document.getElementById("whatever").innerHTML = "Hi, " + TheTime;
</script>
是否有可能像在ASP.NET / PHP中那樣在JavaScript中注入值/數據?
編輯:變量是一個JS變量,從服務器獲取它是受控制的。
好吧,您可以使用一些模板庫(例如把手)並使用jquery來方便元素的選擇,例如:
<div id="target"></div>
<script id="hi-template" type="text/x-handlebars-template">
Hi {{userName}}
</script>
<script type='text/javascript'>
var template = Handlebars.compile($("#hi-template").html());
$('#target').html(template({userName: "bob"}));
</script>
<h1>Hi, @theUsersName</h1>
我從未使用過ASP.NET,但我認為@theUserName
是一個變量。 如果是這種情況,則無法進行1比1的替換。 但是,它仍然有可能。
我不確定你是如何獲得用戶名的,但我認為你有辦法將它變成一個JavaScript變量。 在這種情況下,我建議這樣的事情:
function changeName(username) { document.getElementById("username").innerHTML = username; }
<h1>Hi, <span id="username">StackOverflow</span>!</h1> <button onclick="changeName('user3088260')">Click to Change the Name</button>
現在,獲取數據是一個不同的故事,我會假設一個AJAX調用,在這種情況下你可以做這樣的事情
if(xmlhttp.responseText !== ""){
changeName("user3088260");
}
你提到的所有其他東西都是不必要的。
我還要說整個想法似乎是一個糟糕的設計選擇。 如果您有用戶名,我會假設您有一個登錄系統。 如果您有登錄系統,則必須在輸出頁面之前驗證用戶。 如果您必須在輸出頁面之前驗證用戶,那么您有他們的用戶名。 如果您有自己的用戶名,請將其放在預先呈現的頁面中。 輸出頁面后,無需使用JS。
希望這就是您要尋找的。 如果沒有,我相信其他人會很快就會出現這樣的事情。
最簡單的javascript模板引擎之一是Underscore。 這是SO的受保護答案,解釋了如何執行此操作:
就像有人說的那樣,有很多Javascript模板框架。 這里有一些:
選擇一個之后,您可以(例如)執行以下操作:
<h1>Hi, {{userName}}</h1>
您可以在此鏈接上看到使用Angular進行客戶端模板化的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.