Ich habe einen Einkaufswagen, in dem die Produktoptionen in einem Dropdown-Menü angezeigt werden. Wenn Sie "Ja" auswählen, möchte ich einige andere Felder auf der Seite sichtbar machen.
Das Problem ist, dass der Warenkorb auch den Preismodifikator enthält, der für jedes Produkt unterschiedlich sein kann. Der folgende Code funktioniert:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Allerdings würde ich lieber so etwas verwenden, was nicht funktioniert:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Ich möchte die Aktion nur ausführen, wenn die ausgewählte Option das Wort "Ja" enthält und den Preismodifikator ignorieren würde.
So was:
if (str.indexOf("Yes") >= 0)
... oder Sie können den Tilde-Operator verwenden:
if (~str.indexOf("Yes"))
Dies funktioniert, weil indexOf()
-1
zurückgibt, wenn der String überhaupt nicht gefunden wurde.
Beachten Sie, dass dies zwischen Groß- und Kleinschreibung unterscheidet.
Wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen möchten, können Sie schreiben
if (str.toLowerCase().indexOf("yes") >= 0)
Oder,
if (/yes/i.test(str))
Sie können hierfür Suche oder Übereinstimmung verwenden.
str.search( 'Yes' )
gibt die Position des Matches zurück oder -1, wenn es nicht gefunden wird.
Ein anderer Weg:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
** Getestet unter Firefox, Safari 6 und Chrome 36 **
Es ist ziemlich spät, diese Antwort zu schreiben, aber ich dachte trotzdem daran, sie aufzunehmen. String.prototype
hat jetzt eine Methode includes
, die nach Teilzeichenfolgen suchen kann. Diese Methode unterscheidet zwischen Groß- und Kleinschreibung.
var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false
Um nach einer Teilzeichenfolge zu suchen, können Sie wie folgt vorgehen:
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck
}
Lesen Sie die Dokumentation , um mehr zu erfahren.
ECMAScript 6 führt String.prototype.includes
ein, zuvor contains
genannt.
Es kann so verwendet werden:
_'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
_
Es akzeptiert auch ein optionales zweites Argument, das die Position angibt, an der die Suche beginnen soll:
_'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
_
Es kann polyfilled sein, damit es in alten Browsern funktioniert.
Sie können dieses Polyfill in ie und chrome verwenden
if (!('contains' in String.prototype)) {
String.prototype.contains = function (str, startIndex) {
"use strict";
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};
}
Gibt zurück, wie oft das Schlüsselwort in der Zeichenfolge enthalten ist.
var count = "I have one keyword".match(/keyword/g);
var clean_count = !count ? false : count.length;
Die Methode includes () bestimmt, ob eine Zeichenfolge in einer anderen Zeichenfolge gefunden werden darf, und gibt je nach Bedarf true oder false zurück.
Syntax: -string.includes (searchString [ position])
searchString: Eine Zeichenfolge, nach der in dieser Zeichenfolge gesucht werden soll.
position: -Optional. Die Position in dieser Zeichenfolge, an der die Suche nach searchString beginnen soll. Der Standardwert ist 0.
string = 'LOL';
console.log(string.includes('lol')); // returns false
console.log(string.includes('LOL')); // returns true
Ich weiß, dass der beste Weg str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/ ist
Ich schlage einen anderen Weg vor (str.replace(s1, "") !== str
):
var str = "Hello World!", s1 = "Ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);
Wenn Sie in der Lage sind, Bibliotheken zu verwenden, können Sie feststellen, dass Lo-Dash JS-Bibliothek sehr nützlich ist. In diesem Fall überprüfen Sie _.contains()
(ersetzt durch _.includes()
ab Version 4).
(Hinweis Die Lo-Dash-Konvention nennt das Bibliotheksobjekt _. Vergessen Sie nicht, die Installation auf derselben Seite zu überprüfen, um sie für Ihr Projekt einzurichten.)
_.contains("foo", "oo"); // → true
_.contains("foo", "bar"); // → false
// Equivalent with:
_("foo").contains("oo"); // → true
_("foo").contains("bar"); // → false
In Ihrem Fall gehen Sie vor und verwenden Sie:
_.contains(str, "Yes");
// or:
_(str).contains("Yes");
..was auch immer du besser magst.
Sie können auch überprüfen, ob das genaue Wort in einer Zeichenfolge enthalten ist. Z.B.:
function containsWord(haystack, needle) {
return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}
Verwendungszweck:
containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false
So macht jQuery seine hasClass-Methode.
Keines der oben genannten Probleme hat bei mir funktioniert, da Leerzeichen vorhanden waren, aber das habe ich getan
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
bottab.style.display="none";
bottab2.style.display="none";
if (td) {
var getvar=td.outerText.replace(/\s+/, "") ;
if (getvar==filter){
tr[i].style.display = "";
}else{
tr[i].style.display = "none";
}
}
}