在变量中使用querySelector,而不是在文档中

时间:2014-04-25 15:00:55

标签: javascript

会以某种方式在变量中使用querySelector吗?

listOption_Fonts 变量具有以下内容:

<option value="10">Diário do Nordeste</option><option value="12">Agência Sebrae de      Notícias</option><option value="13">ANBA - Agência de Notícias Brasil - Árabe</option><option value="14">Mundo R.I</option> (and many more)

你想要这样的东西:

listOption_Fonts.querySelector('[value=' + idFontTarget + ']');

但是,返回以下错误:

Uncaught TypeError: undefined is not a function 

如何解决?

我意识到我可以使用正则表达式,但我想知道是否有更实用的方法。 我是否必须直接选择此变量;内容不在页面上。

3 个答案:

答案 0 :(得分:0)

这有点像黑客,但你可以做到以下

var holder = document.createElement('div');
holder.innerHTML = ['<select>','<option value="10">Diário do Nordeste</option><option value="12">Agência Sebrae de      Notícias</option><option value="13">ANBA - Agência de Notícias Brasil - Árabe</option>','</select>'].join('');
holder.querySelector('[value="10"]').text;
>> "Diário do Nordeste"

问题仍然是,为什么你需要这个。
我无法想象任何需要这种情况并且无法以更好的方式解决的情况。

答案 1 :(得分:0)

只需从父母那里查询你的“选项”:

var select = document.querySelector('select'),
    idFontTarget = 12


console.log(select.querySelector('option[value="' + idFontTarget + '"]'));

http://jsfiddle.net/XR8SA/

答案 2 :(得分:0)

哦,这是DOMParser派上用场的地方,我知道它最终会

var listOption_Fonts = '<option value="10">Diário do Nordeste</option><option value="12">Agência Sebrae de      Notícias</option><option value="13">ANBA - Agência de Notícias Brasil - Árabe</option><option value="14">Mundo R.I</option> (and many more)';

var parser       = new DOMParser,
    doc          = parser.parseFromString(listOption_Fonts, "text/html"),
    idFontTarget = '13',
    element      = doc.querySelector('[value="' + idFontTarget + '"]');

FIDDLE