2016-12-28 71 views
0

當我做了「檢查元素」的HTML代碼,我是得了如何獲得元素嵌套的屬性值

<domain-picker class="pull-right" 
current="{"label":"AMN/GRP","value":"assf2324234"}" in-header="true" show-in-header="true"> 
    </domain-picker> 

任何人都可以請讓我知道在jQuery的

  1. 如何獲取上述「域選取器」元素的值「assf2324234」。
  2. 如何與新的字符串設定爲「價值」上面的「域選取器」元素
+3

當前值將不會包含整個json值,因爲您只顯示「{」作爲此值在第一個「」「其他部分不會是當前值。 – C2486

+0

@Rishi一定已經可以讓OP從開發工具中複製live html。引號將是一個小問題....瀏覽器將不會輸出正確的HTML,否則 – charlietfl

回答

6

的屬性以下是評論顯示步驟

// target element 
var $picker = $('domain-picker'), 
// parse current attribute value string to object 
current= JSON.parse($picker.attr('current')); 
// change value 
current.value ='someOtherString'; 
// stringify object and put back as attribute value 
$picker.attr('current', JSON.stringify(current)); 
3

修改你的HTML,使用單引號對於當前屬性

<domain-picker class="pull-right" 
current='{"label":"AMN/GRP","value":"assf2324234"}' in-header="true" show-in-header="true"> 
</domain-picker> 

jQuery中

var json = $("domain-picker").attr("current"); 
json = JSON.parse(json) 
var value = json.value; 

這裏的工作演示https://jsfiddle.net/758y0fp1/1/

0

您需要首先獲得屬性的值.attr jQuery中或的getAttribute()()在JavaScript中會有所幫助。現在由於該值是無效的JSON(按照您提供的html),將無效的JSON轉換爲有效,然後選擇該值。

var obj = document.querySelector("domain-picker").getAttribute("current"); 
 
var json = obj.replace((/'/g), "\""); 
 
var obj = JSON.parse(json) 
 

 
//console log the retrieved value. 
 
console.log("value :", obj["value"]) 
 

 
// set attribute now 
 

 
obj["value"] = "1234567"; 
 

 

 
document.querySelector("domain-picker").setAttribute('current', JSON.stringify(obj));
<domain-picker class="pull-right" 
 
current="{'label':'AMN/GRP','value':'assf2324234'}" in-header="true" show-in-header="true"> 
 
    Hello inpsect me to see the changed attribute value. 
 
    </domain-picker>

0

正如@charlietfl提到的,如果你想使用jQuery,他的回答是你需要的1,這可以用純JavaScript做太多,即。

// getting the element 
var picker = document.getElementsByTagName('domain-picker')[0]; 
// parsing current attribute string to object 
var current= JSON.parse(picker.getAttribute('current')); 
// changing the value 
current.value ='newString'; 
// stringify the object and set the attribute again like 
picker.setAttribute('current', JSON.stringify(current));