2016-11-07 49 views
-1

我試圖在視圖中比較兩個值,看它們是否相等,如果它們相等,則不突出顯示它們是否相等,然後突出顯示新值。我正在嘗試的所有東西都無法正常工作,例如我做錯了什麼?使用javascript在MvC 5中突出顯示

<div> 
    Old Registered Host Name: 
    @Html.DisplayFor(model => model.OldHostName, new { htmlAttributes = new {@id = "oldhostname"}}) 
</div> 
<div> 
    Registered Host Name: 
    @Html.DisplayFor(model => model.NewHostName, new { htmlAttributes = new {@id = "newhostname"}}) 
</div> 
<script type="text/javascript"> 
     $(document).ready(function(){ 
    if(document.getElementById('oldhostname').value != document.getElementById('newhostname').value) 
     { 
     document.getElementById('newhostname').style.backgroundColor = "#FDFF47"; 
     } 
}); 
</script> 
+0

'@ Html.DisplayFor()'不會生成HTML元素 - 只是文本(和你的'新{htmlAttributes ...}'是沒有意義,並且什麼都不做(看看你生成的html) - 你沒有任何帶有id =「oldhostname」或'id =「newhostname」' –

+0

ummm的元素,因爲@ Html.DisplayFor()不會生成html元素我無法以我想要的方式使用它。當我檢查元素時,沒有像Html.EditorFor那樣的元素ID。對於不同的路線有其他建議嗎? –

+0

這是什麼意思(爲什麼在編輯值時你沒有處理它)? - 但Dymos的答案顯示了一個解決方案) –

回答

0

我的C#/ CSHTML有點生疏,但看起來這會使得正和一些文字內容的幾個div的。爲了得到你需要什麼,你需要或者

  • 渲染元素與具有要檢查
  • 渲染的輸入與具有要檢查
  • 值的ID文本內容的ID

你的JS使用HTMLElement.value這是無效的只是任何元素例如div沒有value

如果您生成的HTML將類似於:

<div> Old host name: <span id="oldhostname">...</span> </div> 
<div> New host name: <span id="newhostname">...</span> </div> 

然後,你可以在JS校驗值與

var old = document.getElementById('oldhostname').textContent; 
var new = document.getElementById('newhostname').textContent; 
if (old !== new) { 
    console.log('different!'); 
}