使用Javascript设置选定的属性onClick

使用Javascript设置选定的属性onClick,javascript,jquery,html,Javascript,Jquery,Html,我的javascript技能不是最好的,但我最近一直在努力,我想做的一件事是为html选项标记设置属性。我把这个项目贴在JFIDLE上,让它更容易看。你可以看到。我想我只差一行代码什么的 如何从选项2中删除选定属性并为选项1创建选定属性?换句话说,当我打开“另一个弹出窗口”时,选择选项1而不是选项2 我建议您查看JSFIDLE链接,但我也发布了关于这个问题的代码。 更新链接的javascript: function updateSelected(id, removeID, parentID) {

我的javascript技能不是最好的,但我最近一直在努力,我想做的一件事是为html选项标记设置属性。我把这个项目贴在JFIDLE上,让它更容易看。你可以看到。我想我只差一行代码什么的

如何从选项2中删除选定属性并为选项1创建选定属性?换句话说,当我打开“另一个弹出窗口”时,选择选项1而不是选项2

我建议您查看JSFIDLE链接,但我也发布了关于这个问题的代码。 更新链接的javascript:

function updateSelected(id, removeID, parentID) {
    document.getElementById(parentID).style.display = 'none';
    document.getElementById(id).setAttribute("selected","selected");
    document.getElementById(removeID).removeAttribute("selected")
}
html:

<a href="#box" rel="popup">Popup</a>

<div id="box" class="popup">
<a href="#another-box" rel="popup" onClick="updateSelected("1", "2", "box");">Another box</a>
</div>
<div id="another-box" class="popup">
<form>
    <select>
        <option id="1">option 1</option>
        <option id="2" selected>option 2</option>
    </select>
</form>
</div>

选择1
选择2
感谢您的帮助

如下:

document.getElementById(id).selected=1;//or true
另一种方法是

document.getElementById(id).selected=0;//or false

@Alnitak-感谢您的更正。

要更改选择的条目,您应该更改
.selected
属性,而不是属性

属性只设置控件的初始值,而属性设置当前值

请注意,也不需要从以前选择的元素中删除该属性。这会自动发生,因为(默认情况下)一次只能“选择”一个元素

或者,将封闭的
上的
.value
属性设置为与所需
元素的值相同。该值将是
元素上的
value
属性的值,或者如果没有
value
属性,则为包含的文本的值


请参见查看您的报价,尝试替换


不能在双引号中使用双引号

为什么不一直使用jQuery?在双引号中也使用单引号


$(函数(){
$('a[rel*=popup]').leanmodel({top:200,closeButton:“.popup close”});
$(“#另一”)。在(“单击”)上,函数(e){
更新选定(“o1”、“框”);
返回false;//取消单击-可以改为e.preventDefault()
});
});         
已选择函数更新(id,parentID){
$(“#”+parentID).css(“显示”、“无”);//或.hide()
$(“#”+id).prop(“选定”,true);
}

没有数字ID,即使某些浏览器支持它,并且在双引号中使用单引号。请看我必须这样做,因为我使用php动态生成它们loop@mplungjan严格地说,数字id是HTML5的一项功能。@Alex不,你不必,只要在你的PHP中给它们加上前缀就行了。哦,好的,是的,我的意思是我这么做了,我不是为了简单起见,但它们都有id=“option-1”或者类似的
。selected
是一个布尔属性。@Alnitak根据我的理解,这是正确的;不,你没有抓住重点。作为一个属性,您传递一个字符串,但作为一个属性(这是您使用
。selected
)传递的是一个布尔值。无需从原始条目中删除该属性。除非是“多选”,否则它们都是相互排斥的。这仍然是错误的
.prop('selected')
需要一个布尔值,而不是一个字符串,并且在一个不是事件处理程序的函数中不需要
返回false
。好的,我一直在尝试使它工作,但它仍然不会为我更改它。我不知道为什么。在JS控制台中查看我更新的链接。它不起作用,因为
updateSelected
被(jsfiddle)包装在
onLoad
处理程序中,而DOM0处理程序必须是全局的。改为
wrap(head)
,它就可以工作了。
document.getElementById(id).selected = true;
<a href="#another-box" rel="popup" onClick="updateSelected('1', '2', 'box');">Another box</a>
<a href="#another-box" rel="popup" id="another" >Another box</a>


$(function() {
    $('a[rel*=popup]').leanModal({ top : 200, closeButton: ".popup-close" });       
    $("#another").on("click",function(e) {
        updateSelected("o1","box");
        return false; // cancel click - can be e.preventDefault() instead 
    });


});         
function updateSelected(id, parentID) {
    $("#"+parentID).css("display","none"); // or .hide()
    $("#"+id).prop("selected",true);
}