2015-08-27 19 views

Antwort

14

Element.getAttribute gibt null oder eine leere Zeichenfolge zurück, wenn das Attribut nicht existiert.

Sie würden verwenden Element.hasAttribute:

if (!object.hasAttribute("data-params")) { 
    // data attribute doesn't exist 
} 

oder Element.dataset (siehe auch: in operator):

if (!("params" in object.dataset)) { 
    // data attribute doesn't exist 
} 

oder sogar

if (!object.getAttribute("data-params")) { 
    // data attribute doesn't exist or is empty 
} 
+1

Warum als die gewählte Antwort wird diese nach unten markiert? – Doidgey

0

Versuchen Sie es mit typeof:

if(typeof object.getAttribute("data-params") === "undefined") { 
    console.log('data-attribute doesn't exist'); 
} 
1

Sie cang tun nur falsy Prüfwert

if(!object.getAttribute("data-params")) { 
    //data-attribute doesn't exist 
} 

Ursache getAttribute kann

null oder eine leere Zeichenfolge zurückgeben

auch können Sie object.hasAttribute("data-params") nur verwenden um zu überprüfen, ob das Attribut existiert

2

Der Code, den Sie nicht gepostet nicht gewonnen Ich arbeite nicht so, wie du es erwartest, was du hier machst, ist das Überprüfen des Attributwerts des angegebenen Attributs ("data-params") ist gleich "undefined", die true nur zurückgibt, wenn das Attribut data-params="undefined" ist.

if (object.getAttribute("data-params") === "undefined") { 
    // the "data-params" attribute-value is exactly "undefined" 
    // note that `getAttribute()` is a 
} 

Was ich vermute, Sie wollen zu tun ist:

var typeOfObjectAttribute = typeof object.getAttribute("data-params"); 

if (typeOfObjectAttribute === null || typeOfObjectAttribute === "") { 
    // data-params attribute doesn't exist on that Node. 
} 

Beachten Sie, dass – nach Mozilla Developer Network (am Referenz für Element.getAttribute() unten) – heißt es:

getAttribute() Gibt den Wert eines angegebenen Attributs für das Element zurück. Wenn das angegebene Attribut nicht existiert, ist der zurückgegebene Wert entweder null oder "" (die leere Zeichenfolge) & hellip;

Es ist auch erwähnenswert, dass getAttribute() ein Verfahren des Elementknoten ist, eher als generische Objekte.

Im Übrigen könnten Sie auch folgende Vorgehensweise verwenden (wieder testen, dass das Attribut nicht set):

// here we look to see if the 'params' key is present in the 
// HTMLElement.dataset object of the element, and then invert 
// that result using the '!' operator, to check that the 
// attribute *isn't* present: 
if (!('params' in document.getElementById('elementID').dataset)) { 
    // the data-params attribute is not present. 
} 

Referenzen:

+0

Es funktioniert nicht – jollykoshy

0

Sie können auch einfach die Dataset-API verwenden.

HTMLElement.dataset

Die HTMLElement.dataset schreibgeschützte Eigenschaft ermöglicht den Zugriff sowohl im Lese- und Schreibmodus, um alle benutzerdefinierten Datenattribute (Daten- *) auf das Element gesetzt. Es ist eine Zuordnung von DOMString, ein Eintrag für jedes benutzerdefinierte Datenattribut.

Leider funktioniert das nicht in IE10, aber ich bin mir ziemlich sicher, dass irgendwo da draußen ein Shim ist.

Hier ist ein Beispiel

var containerData \t = document.querySelector('#container').dataset, 
 
    contentData \t = document.querySelector('#content').dataset; 
 

 
// Check if dataset is empty or not. 
 
console.log(Object.keys(containerData).length === 0); 
 
console.log(Object.keys(contentData).length === 0); 
 

 
// Check for specific data 
 
if (containerData.hasOwnProperty('bar')) { 
 
    console.log(containerData.bar); 
 
} 
 

 
// Here is the dataset 
 
console.log(containerData);
<div id="container" data-foo="bar" data-bar="foo"> 
 
    <div id="content"> 
 
    Content 
 
    </div> 
 
</div>

3

gegen null prüfen auch die Lösung lieferte.

if (object.getAttribute("data-params") === null) { 
//data attribute doesn't exist 
}else{ 
//data attribute exists 
} 
Verwandte Themen